使用Spring JDBC多条件java获取特定值



我尝试使用以下代码在Spring数据库中获取具有多个条件的数据

public void AbsenStaff(int id, String category) {
Staff staff = new Staff();
String sql = "Select Absensi from Karyawan WHERE id=? AND Category=?";
int a = jdbcTemplate.queryForObject(sql, new Object[] { id },new Object[]{category},Integer.class);
staff.setjmlhAbsensi(a);
}

然而,IntelliJ给了我这个错误:

Cannot resolve method 'queryForObject(
java.lang.String, 
java.lang.Object[], 
java.lang.Object[], 
java.lang.Class<java.lang.Integer>)'

我的代码有问题吗?

您需要发送对象数组中的所有参数值,因此您正在调用不同的方法。

这样尝试:

public void AbsenStaff(int id, String category) {
Staff staff = new Staff();
String sql = "Select Absensi from Karyawan WHERE id=? AND Category=?";
int a = jdbcTemplate.queryForObject(sql, new Object[]{id, category}, Integer.class);
staff.setjmlhAbsensi(a);
}

此外,在当前版本中取消了此用法。我建议你写如下:

jdbcTemplate.queryForObject(sql,Integer.class,id,category(;

根据https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html

这些是queryForObject方法的有效方法签名

  1. queryForObject(String sql,Class requiredType(
  2. queryForObject(字符串sql、类requiredType、对象…args(
  3. queryForObject(String sql,Object[]args,Class requiredType(
  4. queryForObject(String sql,Object[]args,int[]argTypes,Class requiredType(
  5. queryForObject(String sql,Object[]args,int[]argTypes,RowMapper RowMapper(
  6. queryForObject(String sql,Object[]args,RowMapper RowMapper(
  7. queryForObject(字符串sql,RowMapper RowMapper(
  8. queryForObject(String sql,RowMapper RowMapper,Object…args(

因此,您必须(根据需要(选择其中一个,并以正确的顺序和正确的数据类型提供参数。

我想你想用这个

queryForObject(
String sql, 
Object[] args, 
Class<T> requiredType)

在这种情况下,您应该使用

int a = jdbcTemplate.queryForObject(
sql, 
new Object[] {id,category},
Integer.class);

最新更新