1、JdbcTemplate
(1)为了使JDBC更加易于使用, Spring 在JDBC API上定义了一个抽象层, 以此建立一个JDBC存取框架。
(2)作为Spring JDBC框架的核心, JDBC模板(JdbcTemplate)的设计目的是为不同类型的JDBC操作提供模板方法。每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务。通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低。
1.1准备工作
在使用JdbcTemplate访问数据库之前,需要先建立一个数据库。本人使用的数据库是MySQL,图形化界面用的DataGrip。
首先创建一个springjdbc数据库,然后在该数据库中创建两个表employee和department。
create database springjdbc;//创建一个springjdbc数据库
usr springjdbc;
create table employee(//创建表employee
id int auto_increment not null,
last_name varchar(120),
email varchar(120),
dept_id int,
primary key(id)
) engine=innodb default charset=utf8;
create table department(//创建表department
id int not null,
name varchar(120),
primary key(id)
)engine=innodb default charset=utf8;
alter table employee add foreign key(dept_id) references department(id);//为表employee添加外键
insert into department(id,name) values(1,"财务部"),(2,"开发部"),(3,"人事部"),(4,"公关部");//向表department中插入数据
执行上述mysql语句之后,所有数据库的准备工作已经完成,可以使用JdbcTemplate访问该数据库并进行操作。
1.2JdbcTemplate的使用
本人使用的IDE是eclipse
(1)创建一个工程spring-jdbc,并导入jar包。
(2)创建一个db.properties文件,用于保存数据库的连接配置信息。
(3)在Spring的xml文件中配置JdbcTemplate。
(4)配置好JdbcTemplate之后便可以使用其来访问数据库并对数据库进行操作。
操作1:对数据库进行更新,执行 INSERT, UPDATE, DELETE
操作2:对数据库进行批量更新,执行 INSERT, UPDATE, DELETE
操作3:从数据库中获取一条记录, 实际得到对应的一个对象
操作4:从数据库中获取多条记录, 实际得到对应的一个对象集合
操作5:从数据库中获取单个列的值
1.3简化JdbcTemplate的使用
每次使用都创建一个 JdbcTemplate 的新实例, 这种做法效率很低下。JdbcTemplate类被设计成为线程安全的, 所以可以在IOC 容器中声明它的单个实例, 并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了 Java 1.5 的特定(自动装箱, 泛型, 可变长度等)来简化开发。
示例:
2、NamedParameterJdbcTemplate
(1)在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制。定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参数绑定。
(2)在 Spring JDBC 框架中, 绑定 SQL 参数的另一种选择是使用具名参数(named parameter)。
(3)具名参数: SQL 按名称(以冒号开头)而不是按位置进行指定. 具名参数更易于维护, 也提升了可读性. 具名参数由框架类在运行时用占位符取代。
(4)具名参数只在 NamedParameterJdbcTemplate 中得到支持。
在Spring的XML配置文件中配置NamedParameterJdbcTemplate:
配置好之后使用NamedParameterJdbcTemplate:
注:(1)在SQL语句中使用具名参数时, 可以在一个Map中提供参数值, 参数名为键;
(2)也可以使用 SqlParameterSource 参数;
(3)批量更新时可以提供 Map 或 SqlParameterSource 的数组;
本博客内容来自尚硅谷佟刚老师的课程—《Spring4》
本博客中的源码源码