关于PreparedStatement以及Jpa中in参数的设置
来源:互联网 发布:用手机淘宝买东西步骤 编辑:程序博客网 时间:2024/06/06 01:57
关于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参数的设置。
以上是小白我在实际开发过程中踩过的坑,希望可以为你们解决一些小难题。
阅读全文
1 0
- 关于PreparedStatement以及Jpa中in参数的设置
- 关于JSP中PreparedStatement的使用
- JDBC中PreparedStatement中Like后面的参数
- 在PreparedStatement中,sql使用in操作符的问题
- Spring data JPA 中IN的使用
- jdbc中PreparedStatement不定参数的小技巧
- 关于Mysql中in参数变量的另外一种写法
- angular中关于如何传id以及其他参数的
- JDBC中关于PreparedStatement.setObject的一些细节说明
- 关于hibernate用原生sql,为防sql注入,sql中in(?,?)设置参数问题
- Spring JPA getJpaTemplate find 多个参数 的设置
- jpa分页标签保存条件查询参数的设置
- springboot中关于JPA的坑
- 关于QFileDialog::getOpenFileName中dir参数的设置
- 关于Volley中JsonObjectRequest使用Post设置参数的问题
- 关于使用Hibernate以及JPA查询使用的问题
- jpa的in查询
- 关于PreparedStatement.setObject()的问题
- 基于DCNN的人脸特征点定位
- 四则运算
- TextView使用
- MemCache超详细解读
- IIS7 Manager在任务栏中不能正常打开
- 关于PreparedStatement以及Jpa中in参数的设置
- [LeetCode]344. Reverse String
- Android提醒,Dialog、Toast和Snackbar。
- DevExpress.XtraEditors.CheckedListBoxControl 控件使用
- Static修饰符--简单讲解
- thinkphp框架操作mongo
- ios中UIButton的使用
- 教你上传本地代码到github
- 综合业务分析高并发及解决方案