关于PreparedStatement以及Jpa中in参数的设置
2017-07-24 17:08
169 查看
关于PreparedStatement以及Jpa中in参数的设置
在实际开发的过程中,都会遇到sql语句需要传in的参数的问题,小白我在开发的过程中也踩了好多坑,今天这里结合一些大大给的答案,简单的总结一下使用PreparedStatement以及在JPA中使用Query时, in后面的参数设置的方法。PreparedStatement in参数设置
PreparedStatement中本身提供的方法setArray()方法并不适用于mysql,当你在使用的过程中会报SQLFeatureNotSupportedException异常。这里如果需要设置in的参数,需要对参数进行拼接。下面提供案例:public void function(String [] list) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < list.length; i++) { buffer.append("?, "); } buffer.deleteCharAt(buffer.length() - 1); buffer.deleteCharAt(buffer.length() - 1); String sql = "select * from Student a where a.id in ("+buffer+")"; Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(sql); for (int i = 0; i < list.length; i++) { pstmt.setString(i + 1, list[i]); } rs = pstmt.executeQuery(); if (rs.next()) { ........ } } catch (Exception e) { ........ } finally { DbConnectionManager.closeConnection(rs, pstmt, con); } }
这里采用字符串拼接的方法,拼接出类似(?, ?, ?)的参数方式来实现in的参数设置
JPA query查询语句中实现in的参数设置
在使用JPA query时我们会发现并没有hibernate提供setParameterList方法,这个时候,如果要对in的参数进行设置,我们可以采用query原生的setParameter方法,不过在使用setParameter方法时,需要将数组进行转换,转换为对应的list对象,传入参数中,下面案例提供参考。public void function(String [] list) { String sql = "select * from Student a where a.id in (?1)"; Query query = entityManager.createNativeQuery(sql); List<String> res = new ArrayList<String>(list.length); for (String s:list){ res.add(s); } query.setParameter(1, res); }
这样我们就可以实现in参数的设置。
以上是小白我在实际开发过程中踩过的坑,希望可以为你们解决一些小难题。
相关文章推荐
- 关于hibernate用原生sql,为防sql注入,sql中in(?,?)设置参数问题
- 关于eclipse3.3 all-in-one 启动参数设置
- 关于imageview 不让背景图片自动拉伸填充 imageview 以及布局参数的设置的小结(自己试验的可能不怎么准确)
- 关于useradd、adduser和userdel以及创建用户的默认参数设置
- eclipse.in 4000 i内存设置以及参数详解
- LIBSVM使用方法及参数设置 主要参考了一些博客以及自己使用经验。
- 关于android view属性的归属以及如何在代码中设置相关属性总结
- 【Scikit-Learn 中文文档】机器学习: scikit-learn 中的设置以及预估对象 - 关于科学数据处理的统计学习教程 - scikit-learn 教程 | ApacheCN
- 关于GRUB中的rhgb以及quiet参数的含义
- 关于MySql链接url参数的设置
- Hibernate的HQL中in参数设置
- 关于Eclipse主题以及genymotion的相关设置
- 关于addChild()的参数问题以及调度器schedule()
- 关于session在PHP5的配置文件中的详细设置参数说明
- 关于tomcat设置了minSpareThread等参数的问题
- 关于mysql创建账户以及权限设置的若干方法和问题
- Tomcat关于encoding编码的默认设置以及乱码产生的原因
- 关于更新sdk用的代理设置,以及hosts配置的了解
- 关于jsp页面中的pageEncoding和contentType以及html中的<meta标签中字符集的设置(转)
- Oracle数据库中的控制文件管理以及常用参数设置