Spring对JDBC的支持

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》
本博客中的源码源码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值