1、JdbcTemplate简介

(1)Spring提供的一个操作数据库的技术JdbcTemplate,是对Jdbc的封装。语法风格非常接近DBUtil。

  • JdbcTemplate可以直接操作数据库,加快效率,而且学这个JdbcTemplate也是为声明式事务做准备,毕竟要对数据库中的数据进行操纵!
  • JdbcTemplate中并没有提供一级缓存,以及类与类之间的关联关系!就像是spring提供的一个DBUtils。
  • Spring对数据库的操作使用JdbcTemplate来封装JDBC,结合Spring的注入特性可以很方便的实现对数据库的访问操作。使用JdbcTemplate可以像JDBC一样来编写数据库的操作代码

(2)为啥要使用Jdbc_template进行开发呢?

  • Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。
  • Spring提供的JdbcTemplate对jdbc做了封装,大大简化了数据库的操作。

找到Spring JdbcTemplate源码,可以看到如下方法:

Connection con = DataSourceUtils.getConnection(getDataSource());

如果直接使用JDBC的话,需要我们加载数据库驱动、创建连接、释放连接、异常处理等一系列的动作;繁琐且代码看起来不直观。

此外,Spring提供的JdbcTempate能直接数据对象映射成实体类,不再需要获取ResultSet去获取值/赋值等操作,提高开发效率;

如下:return (User) jdbcTemplate.queryForObject("select * from tb_test1 where id = 100", User.class)

(3)配置环境

①导入jar包

    • commons-logging-1.1.3.jar
    • spring-aop-4.0.0.RELEASE.jar //注解会使用到的包
    • spring-beans-4.0.0.RELEASE.jar
    • spring-context-4.0.0.RELEASE.jar
    • spring-core-4.0.0.RELEASE.jar
    • spring-expression-4.0.0.RELEASE.jar

②在IOC容器中配置数据源

<!-- 加载properties文件中 信息 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置数据源 -->
<bean id="comboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="user" value="${jdbc.user}"></property>
    <property name="password" value="${jdbc.passowrd}"></property>
    <property name="jdbcUrl" value="${jdbc.url}"></property>
    <property name="driverClass" value="${jdbc.driver}"></property>
</bean>

其中jdbc.properties文件内容:

  • jdbc.user=root
  • jdbc.passowrd=mysql
  • jdbc.url=jdbc:mysql://localhost:3306/test
  • jdbc.driver=com.mysql.jdbc.Driver

③在IOC容器(applicationContext.xml)中配置JdbcTemplate对象的bean,并将数据源对象装配到JdbcTemplate对象中

<!-- 配置JdbcTemplate对应的bean, 并装配dataSource数据源属性-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="comboPooledDataSource"></property>
</bean>

2、案例演示

(1)首先,新建数据库 jdbc_template,新建表 employee,并插入几条测试数据

USE `jdbc_template`;
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
  `emp_id` int(11) NOT NULL AUTO_INCREMENT,
  `emp_name` char(100) DEFAULT NULL,
  `salary` double DEFAULT NULL,
  PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=gb2312;

将数据库连接信息改为:jdbc.url=jdbc:mysql://localhost:3306/jdbc_template

(2)在bean包下新建 Employee.java

 1 public class Employee {
 2     private Integer emp_id;
 3     private String emp_name;
 4     private Double salary;
 5     public Employee() {
 6         super();
 7     }
 8     public Employee(Integer emp_id, String emp_name, double salary) {
 9         super();
10         this.emp_id = emp_id;
11         this.emp_name = emp_name;
12         this.salary = salary;
13     }
14     public int getEmp_id() {
15         return emp_id;
16     }
17     public void setEmp_id(int emp_id) {
18         this.emp_id = emp_id;
19     }
20     public String getEmp_name() {
21         return emp_name;
22     }
23     public void setEmp_name(String emp_name) {
24         this.emp_name = emp_name;
25     }
26     public double getSalary() {
27         return salary;
28     }
29     public void setSalary(double salary) {
30         this.salary = salary;
31     }
32     @Override
33     public String toString() {
34         return "Employee [emp_>;
35     }
36 }
Employee.java

相关文章: