1. 程式人生 > >MyJdbcTemplate 常用的方法總結

MyJdbcTemplate 常用的方法總結

首先介紹一下MyJdbcTemplate的來歷:
其實就是我們在工具類中定義的

[Maven: com.aixuexi:thor-util:1.4.39-RELEASE] com.aixuexi.thor.jdbc public class MyJdbcTemplate extends JdbcTemplate       

在DAO層,我們通過註解@Resource匯入
下面我們直接上程式碼進行分析,標準的通過@Repository註解DAO層
@Resource
private MyJdbcTemplate jdbcTemplate;
這時候我們通過jdbcTemplate呼叫相應的方法進行資料庫查詢操作,最常見的一個方法
1.返回一般的引數型別 比如 Integer 、 String等
return jdbcTemplate.queryForObject(sql.toString(), new Object[]{studentId, endTime}, Integer.class);
queryForObject的三個引數(sql,需要傳入的引數,返回的型別)
2.返回一些特殊的資料型別,比如List等
第二個是 :
對於一個list中只包含一個物件:
return jdbcTemplate.query(sql,new Object[]{},new BeanPropertyRowMapper(FfStudentAnswerVoo.class));
對於list中包含多個物件:
return myJdbcTemplate.query(sql, new Object[]{insId}, new RowMapper() {
這裡的query的兩個引數型別(sql,需要傳入的引數,)
既然上面的兩個方法都已經掌握了那麼其他的方法也是如法炮製,不再一一詳解

下面 我將總結一下對於String型別的資料,在sql通過直接傳輸的過程中如果直接傳入sql中賦值則會報錯ClassCastException,通過個人探索,我們可以通過sql拼接實現,我覺得這是因為在直接賦值的時候會預設進行型別轉化,如果轉換失敗那麼我們的sql操作便會執行報異常,但是如果我們使用sql拼接則不會進行型別轉換,下面直接貼程式碼

`
final StringBuilder sql = new StringBuilder("");
//SELECT COUNT(is_correct) FROM ff_student_answer WHERE student_id = 110454 AND end_time >= '2017-12-05' AND is_correct = 1
sql.append("SELECT COUNT(is_correct) FROM ff_student_answer WHERE ");
sql.append(" student_id = ? ");
sql.append(" AND ");
sql.append(" end_time >= ? ");
sql.append(" AND ");
sql.append(" is_correct = 1 ");
Integer r = jdbcTemplate.queryForObject(sql.toString(), new Object[]{studentId, endTime}, Integer.class);
if (r == null){
return 0;
}
else {
return r;
}