前言

最近的项目中由于只进行查询,所以使用了jdbcTemplate来直接操作sql进行持久层的操作,初次接触jdbcTemplate,从最开始的什么都不知道到现在基本方法都大致知道什么意思,特此记录一下

正文

jdbcTemplate方法常用的大约有这个几个

1. queryForInt()/queryForLong()
2. queryForObject()
3. queryForList()
4. queryForMap()
5. query()
1. queryForInt()/queryForLong()

使用queryForInt()主要是为了获取数据库中记录总数,获取指定条件的记录数等,不需要对应列名,只需要返回一个数据即可.queryForLong()是同理的.

如果你想查询到结果并命名的话,你可以使用queryForMap(),查询到的值更改列名为别名,然后使用map.get("别名")来获取.

2. 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语句,第二个参数:你查询的结果的返回值类型,第三个参数是:你传入的参数
3.  queryForList()

在我们需要得到一个数据集合的时候,我们通常使用queryForList()进行。返回的结果是一个List<Map>结构的集合。其中一个Map代表了一行数据,使用列名作为key,使用值作为value。

并且queryForList()会默认自动封装。不需要手动进行数据封装。

4. queryForMap()

queryForMap()是查询一条数据的时候使用的封装。将列名作为key,值作为value。封装成一个map返回结果。

需要特别注意的是:因为queryForMap()是要求必须要有结果集的,如果查询出的结果是null,则会报错!如果不确定是否有结果集,请使用query()进行查询,然后获取数据。(7-4更新)

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比较精通,使用起来非常方便,灵活。

jdbcTemplate的一些常用方法的更多相关文章

  1. 编写DAO,通过JdbcTemplate操作数据库的实践

    目的:编写DAO,通过Spring中的JdbcTemplate,对数据库中的学生数据进行增删改查操作. 要操作的数据库表结构为: 一.大体框架 1.要利用JdbcTemplate,首先要添加Sprin ...

  2. Spring框架详解介绍-基本使用方法

    1.Spring框架-控制反转(IOC) 2.Spring框架-面向切面编程(AOP) 3.Spring 内置的JdbcTemplate(Spring-JDBC) Spring框架-控制反转(IOC) ...

  3. JdbcTemplate常用方法

    JdbcTemplate简介 JdbcTemplate是Spring JDBC的核心类,借助该类提供的方法可以很方便的实现数据的增删改查. Spring对数据库的操作在jdbc上面做了深层次的封装,使 ...

  4. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

  5. Spring JDBC常用方法详细示例

    Spring JDBC使用简单,代码简洁明了,非常适合快速开发的小型项目.下面对开发中常用的增删改查等方法逐一示例说明使用方法 1 环境准备 启动MySQL, 创建一个名为test的数据库 创建Mav ...

  6. spring的JdbcTemplate

    一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.       第一种方式:我们可以在自己定 ...

  7. spring的jdbcTemplate的使用

    转载:http://1358440610-qq-com.iteye.com/blog/1826816 一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作. ...

  8. Spring中jdbcTemplate的用法实例

    一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.       第一种方式:我们可以在自己定 ...

  9. Java 之 JDBCTemplate

    Spring JDBC Spring 框架是对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发. 步骤: 1.导入 jar 包 2.创建 JDBCTemplat ...

随机推荐

  1. 'webpack' 不是内部或外部命令解决办法以及npm配置

    昨天在笔记本上安装webpack,按照教程下来,使用webpack命令行,报错:'webpack' 不是内部或外部命令,也不是可运行的程序 或批处理文件.网上有大量的配置方法与解决办法,找了好久才成功 ...

  2. PHP会话控制之如何正确设置session_name

    定义: string session_name([string $name]) 说明: 在php.ini中配置为:session.name = PHPSESSID 在请求开始的时候,会话名称会被重置并 ...

  3. PHP 数组遍历 foreach 语法结构

    foreach 语法结构用于遍历数组. foreach() PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未 ...

  4. react native easter的分享

    React 可以看做是连接native与JavaScript的桥梁bridge: 实现用js语言时间app的开发: 即使你不知道native是什么:

  5. mysql 查看表信息

    desc 表名; 查看表结构信息 show create table 表名; 查询建表详细信息 select COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT from i ...

  6. hdu4318阶梯博弈nim变形

    阶梯博弈原理参考:http://www.cnblogs.com/jiangjing/p/3849284.html 这题计算每两个之间的间隔就行了,如果是奇数个就把第一个前面的看作一个,偶数个就是两个点 ...

  7. Quartz教程五:SimpleTrigger

    原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...

  8. SpringBoot全家桶

    前言 Spring简化了Java的开发,而SpringBoot简化了Spring.本文用SpringBoot采用分层的结构整合了filter,aspect,mybaits,logback,redis, ...

  9. C#,WebRequest类、HttpWebRequest类与HttpRequest类的区别

    C#,WebRequest类和HttpWebRequest类的区别? httpWebRequest是webRequest的子类,httpWebRequest是基于http协议的 . HttpWebRe ...

  10. zoj 2976 Light Bulbs(暴力枚举)

    Light Bulbs Time Limit: 2 Seconds      Memory Limit: 65536 KB Wildleopard had fallen in love with hi ...