查詢
queryForObject
//關于 jdbcTemplate的queryForObject方法。下面我們就一一解析一下:
spring 3.2.2 版本之後jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong() 就取消了,全部用queryForObject代替了,這裡就不詳解了。
queryForObject(sql, requiredType)
本質上和queryForInt相同,隻是可以傳回不同的對象,例如傳回一個String對象
2個參數,1、sql 2、傳回來的對象class
String sql = "select count(*) from user";
Integer num = jdbcTemplate.queryForObject(sql, Integer.class);
這裡不能直接映射為一個實體類,如
運作時會報錯。
如果想映射為具體的實體,可以使用ORM架構,或者後面介紹的方法。
queryForObject(sql, requiredType, args…)
第三個參數是個可變參數
String sql = "select count(*) from user where ID<? AND ID>?";
jdbcTemplate.queryForObject(sql, Integer.class,4,2 );
queryForObject(sql, args[], requiredType)
第二個參數是個參數數組
jdbcTemplate.queryForObject(sql,new Integer[]{5,1}, Integer.class)
也可以使用不同類型的參數
String sql = "select count(*) from user where ID>? AND USER_NAME LIKE ?";
jdbcTemplate.queryForObject(sql, new Object[]{1,"%哈%"},Integer.class);
queryForObject(sql, rowMapper)
注意,這裡查詢必須保證隻能查詢一條資料,否則會報錯。
String sql = "select * from user WHERE ID = 1";
User user = jdbcTemplate.queryForObject(sql, new RowMapper<User>(){
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("ID"));
user.setUserName(rs.getString("USER_NAME"));
return user;
}
});
或者使用RowMapper的實作類:BeanPropertyRowMapper
String sql = "select * from user WHERE ID = ";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.Class));
傳參也是跟上面相同,兩種方法。
queryForList
傳回一個裝有map的list,每一個map是一條記錄,map裡面的key是字段名
List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT * FROM user");
//得到裝有map的list
for(int i=;i<rows.size();i++){ //周遊
Map userMap=rows.get(i);
System.out.println(userMap.get("id"));
System.out.println(userMap.get("name"));
System.out.println(userMap.get("age"));
}
傳參同上。
queryForMap
//這個查詢隻能是查詢一條記錄的查詢,傳回一個map,key的值是column的值
Map<String, Object> map = jdbcTemplate.queryForMap("select * from user");
map.get("name ");
queryForRowSet
//傳回一個結果集然後調用.getString或者getInt等去取值
query方法就不詳解了,不常用,有queryForXXX方法基本夠用。
更新
execute
執行sql語句,無傳回執,用于更新操作(增、删、改)
jdbcTemplate.execute(sql);
update
更新操作,傳回受影響的行數
Int rowNum = jdbcTemplate.update(sql);
batchUpdate
執行批量更新,參數為string數組
String[] sql = new String[2];
sql[0] = “”;
sql[1] = “”;
jdbcTemplate.batchUpdate(sql);
//更新,args為對象數組
jdbcTemplate.update(sql, args[]);