第一种方式,重载PreparedStatementCreator
![](http://img.555519.xyz/uploads/20230327/e506b7d45c88738953a70e8f07f2a89b.jpg)
jdbcTemplate.update(
new
PreparedStatementCreator()
...
{
![](http://img.555519.xyz/uploads/20230327/cca92b20682b71c7106b1970d6f0d57a.jpg)
public PreparedStatement createPreparedStatement(Connection conn)...{
String sql="insert into user (name,age) values(?,?)";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,name);
ps.setInt(2,age);
return ps;
}
}
);
第二种方式,重载PreparedStatementSetter
![](http://img.555519.xyz/uploads/20230327/e506b7d45c88738953a70e8f07f2a89b.jpg)
jdbcTemplate.update(
"
insert into user(name,age) values(?,?)
"
,
new
PreparedStatementSetter()
...
{
![](http://img.555519.xyz/uploads/20230327/cca92b20682b71c7106b1970d6f0d57a.jpg)
public void setValues(PreparedStatement ps) throws SQLException ...{
ps.setString(1,name);
ps.setInt(2,age);
}
}
);
![](http://img.555519.xyz/uploads/20230327/a09c98f32d7b1dd9f1805a2686948e09.jpg)
//
jdbcTemplate会自动创建PreparedStatementCreator实例,以提供传递给setValues方法的ps对象
第三种方式,直接使用SQL
jdbcTemplate.update("insert into user (name,age) "+"values (' " + name + " ', " +age +")");