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

发布了62 篇原创文章 · 获赞 27 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览