1 方法 queryForObject() 與queryForList()
方法queryForObject(),當在數據表查找的記錄不存在時,將拋異常,使用時需要添加異常處理,根據異常類型確定返回結果,建議使用queryForList()替代.
2 方法 update(sql,new Object[]{} ) 與 jdbcTemplate.update(sql, new PreparedStatementSetter())
在spring中第一中方式最終將轉換爲第二種去執行,傳說第二種效率更高,未經驗證. 這裏只講述這兩種方式的使用,不考慮效率問題.
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
int rowsAffected = jdbcTemplate.update(sql, new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
int index = 0;
ps.setString(++index, registerData.getOpenid());
ps.setString(++index, registerData.getCellphone());
ps.setString(++index, registerData.getPassword());
}
});
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
int rowsAffected = jdbcTemplate.update(sql, new Object[]{
registerData.getOpenid(),
registerData.getCellphone(),
registerData.getPassword()
});
3 插入返回主鍵
KeyHolder keyHolder = new GeneratedKeyHolder();
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public java.sql.PreparedStatement createPreparedStatement(Connection con)throws SQLException, DataAccessException {
// TODO Auto-generated method stub
java.sql.PreparedStatement preparedStat = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int index = 0;
preparedStat.setString(++index, loginData.getOpenId());
preparedStat.setString(++index, loginData.getCellphone());
preparedStat.setString(++index, loginData.getPassword());
return preparedStat;
}
}, keyHolder);
BigInteger generatedId = BigInteger.valueOf(keyHolder.getKey().longValue());