前言
最近的项目中因为只进行查询,因此使用了jdbcTemplate来直接操做sql进行持久层的操做,初次接触jdbcTemplate,从最开始的什么都不知道到如今基本方法都大体知道什么意思,特此记录一下sql
正文
jdbcTemplate方法经常使用的大约有这个几个数据库
1. queryForInt()/queryForLong() 2. queryForObject() 3. queryForList() 4. queryForMap() 5. query()
1. queryForInt()/queryForLong()
使用queryForInt()主要是为了获取数据库中记录总数,获取指定条件的记录数等,不须要对应列名,只须要返回一个数据便可.queryForLong()是同理的.app
若是你想查询到结果并命名的话,你可使用queryForMap(),查询到的值更改列名为别名,而后使用map.get("别名")来获取.ui
2. queryForObject()
其实本质上queryForObject()和queryForInt()是一直的,只不过能够返回一个非int的值,好比你查询指定id的对象的某一个属性,可使用Object进行接收,而不能使用int来接收.this
(6-25更新)举个例子:spa
String sql = "SELECT name FROM user WHERE id = ?"; return jdbcTemplate.queryForObject(sql,String.class,id); //须要注意的是:第一个参数:SQL语句,第二个参数:你查询的结果的返回值类型,第三个参数是:你传入的参数
3. queryForList()
在咱们须要获得一个数据集合的时候,咱们一般使用queryForList()进行。返回的结果是一个List<Map>结构的集合。其中一个Map表明了一行数据,使用列名做为key,使用值做为value。code
而且queryForList()会默认自动封装。不须要手动进行数据封装。对象
4. queryForMap()
queryForMap()是查询一条数据的时候使用的封装。将列名做为key,值做为value。封装成一个map返回结果。blog
须要特别注意的是:由于queryForMap()是要求必需要有结果集的,若是查询出的结果是null,则会报错!若是不肯定是否有结果集,请使用query()进行查询,而后获取数据。(7-4更新)get
5. 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());
后记
总的来讲,jdbcTemplate对于查询来讲,若是你对sql比较精通,使用起来很是方便,灵活。