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包
- IOC容器需要的jar包-------------------------资源目录--->jar包资源--->Spring相关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
- MySQL驱动、C3P0jar包-------------------------资源目录--->jar包资源-->c3p0-0.9.1.2jar包和mysqlConnection jar包
-
- c3p0-0.9.1.2.jar
- mysql-connector-java-5.1.42-bin.jar
- JdbcTemplate需要的jar包-------------------------资源目录--->jar包资源-->JdbcTemplate相关jar包
- spring-jdbc-4.0.0.RELEASE.jar
- spring-orm-4.0.0.RELEASE.jar
- spring-tx-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 }