springboot jdbctemplate字符串concat失败,错误为“索引:2缺少IN或OUT参数”

时间:2019-03-17 09:06:26

标签: spring-boot spring-data-jpa spring-data stringbuilder jdbctemplate

我正在使用Stringbuilder连接select语句的非null字段。但是它的代码失败 “ SQL状态[99999];错误代码[17041];索引:: 2缺少IN或OUT参数;嵌套异常是java.sql.SQLException:索引:: 2缺少IN或OUT参数”

我尝试打印用过的列,它们打印正常。请检查并让我知道我在哪里出错。

	public List<Dbinv> listdbbysearch(String database, String server, String node, String dc , String env, String instancename ) {
	
		StringBuilder sqlstmt = new StringBuilder ("select *  from dbinv where ");
		StringBuilder tempval = new StringBuilder ("");

		  if ( database !=null) {
		  sqlstmt.append ( " database = ?");
		  tempval.append ("database");
		  }

		  if ( server !=null) {
		  sqlstmt.append ( " and server =?");
		  tempval.append(", server");
		  }

		  if ( node != null) {
		  sqlstmt.append ( " and node =?");
		  tempval.append(", node");
		  }

		  if ( dc != null) {
		  sqlstmt.append ( " and dc =?");
		  tempval.append(", dc");
		  }

		  if ( env != null) {
		  sqlstmt.append ( " and env =?");
		  tempval.append(", env");
		  }

		  if ( instancename != null) {
		  sqlstmt.append ( " and instancename =?");
		  tempval.append(", instancename");
		  }


		  System.out.println(sqlstmt);
		  System.out.println(tempval);
		

        
			String query = "Select * from dbinv where ( database = ? or database=null) AND (server = ?) AND ( node = ?) AND (dc = ?) AND (env = ?) AND (instancename = ?)" ;
		List<Dbinv> dbinvs = template.query(sqlstmt.toString(),new Object[]{tempval.toString()},new BeanPropertyRowMapper<>(Dbinv.class));

        return dbinvs;

		
		        }



}

请注意,当我为测试用例硬编码相同的参数时,它的工作没有任何错误

任何人都可以在我的查询部分中建议使用“ new Object []”跳过的选项。

1 个答案:

答案 0 :(得分:0)

springboot中的JpaRepository选项解决了我的问题,我能够根据需要创建自定义的findby选项。

相关问题