网站: https://blog.csdn.net/lhb0101/article/details/84914376
https://blog.csdn.net/qq_41154882/article/details/102881218?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
1.JdbcTemplate方法介绍
1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
Execute、executeQuery、executeUpdate
2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;
3、query方法及queryForXXX方法:用于执行查询相关语句;
4、call方法:用于执行存储过程、函数相关语句。
2.jdbcTemplate方法常用的大约有这个几个
1. queryForInt()/queryForLong()
2. queryForObject()
3. queryForList()
4. queryForMap()
5. query()
- queryForInt()/queryForLong()
使用queryForInt()主要是为了获取数据库中记录总数,获取指定条件的记录数等,不需要对应列名,只需要返回一个数据即可.queryForLong()是同理的.
如果你想查询到结果并命名的话,你可以使用queryForMap(),查询到的值更改列名为别名,然后使用map.get("别名")来获取.
- queryForObject()
其实本质上queryForObject()和queryForInt()是一直的,只不过可以返回一个非int的值,比如你查询指定id的对象的某一个属性,可以使用Object进行接收,而不能使用int来接收.
(6-25更新)举个例子:
String sql = "SELECT name FROM user WHERE id = ?";
return jdbcTemplate.queryForObject(sql,String.class,id);
//需要注意的是:第一个参数:SQL语句,第二个参数:你查询的结果的返回值类型,第三个参数是:你传入的参数
- queryForList()
在我们需要得到一个数据集合的时候,我们通常使用queryForList()进行。返回的结果是一个List
并且queryForList()会默认自动封装。不需要手动进行数据封装。
- queryForMap()
queryForMap()是查询一条数据的时候使用的封装。将列名作为key,值作为value。封装成一个map返回结果。
需要特别注意的是:因为queryForMap()是要求必须要有结果集的,如果查询出的结果是null,则会报错!如果不确定是否有结果集,请使用query()进行查询,然后获取数据。(7-4更新)
- query()
query()进行查询的时候,必须自行对结果集进行取出并封装。
优点是:数据更加灵活,如果你想在结果集中加上一个固定值作为标记,甚至自己自定义key的值,对value的值进行计算等等,都可以,非常灵活。
缺点是:你需要手动进行封装数据。
代码如下:
StringBuilder sql = new StringBuilder();
sql.append("SELECT *FROM USER");
List<Object> paramList = new ArrayList<>();
if (!StringUtils.isEmpty(ID)) {
sql.append(" AND TI.ID = ? ");
paramList.add(ID);
}
return this.jdbcTemplate.query(sql.toString(),
(rs, rowNum) -> {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("L1", rs.getString("L1"));
dataMap.put("L2", rs.getInt("L2") + 100); //对查询出来的结果进行计算,修改等等操作
dataMap.put("L3", 1); //我添加了一个固定列到结果集中
return dataMap;
}, paramList.toArray());
评论