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注入。

经验分享 程序员 微信小程序 职场和发展