Java笔记4.4--JDBC简单预处理批处理防SQL注入
预处理批处理语法:
PreparedStatement pstmt; String query = "insert into student valuse (?,?)"; pstmt = connection.prepareStatement(query); pstmt.setString(1,"1"); pstmt.setString(2,"Peter"); pstmt.addBatch(); pstmt.executeBatch();
项目中一般PreparedStatement比Statement用的多。
能事先编译,稍许提升SQL性能,避免SQL注入问题。如果不采用预处理,那么每条插入都会编译一次,就会降低性能。
索引从1开始,不是0.
对于int等,用setInt,别都用setString。
预处理和批处理整合使用。
每批别太多,500-1000,过大或撑爆缓存。
批处理要么全成功,要么全失败,最好在catch里记录失败的数据,方便重试。
PreparedStatenment防SQL注入:
问号是占位符,你即使前端输入框是sql语句,到这里依然值能是指定属性的值。
总结:
使用过的JDBC哪些对象?Statement和PreparedStatement有什么差别?是否了解批处理和预处理?
平时有用过预处理+批处理的方法。在每批数据用500-1000的范围,过大撑爆内存,catch记录每批失败数据。对于前段的页面用预处理防止sql注入。
项目中数据量比较小,没用mybatis,在JDBC用到了批处理预处理。
在myBatis等ORM中,不用SQL拼装语句,用占位符防止SQL注入。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
java高级--多线程初体验