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;
}

猜你喜欢

转载自blog.csdn.net/baidu_34168157/article/details/78821098
今日推荐