您的位置:首页 > 数据库

MyJdbcTemplate 常用的方法总结

2017-12-16 17:46 246 查看
首先介绍一下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等

第二个是 :

return jdbcTemplate.query(sql,new Object[]{},new BeanPropertyRowMapper(FfStudentAnswerVoo.class));

这里的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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class MyJdbcTemp sql拼接