Spring整合JDBC
1.编码前准备
-
建表s_user
create table s_user( id number primary key, name varchar2(20), age number(2), birth date );
-
创建序列,用来生成主键
create sequence user_id_seq increment by 1 start with 1;
-
创建对象类
package db.bean; import java.util.Date; public class SUser { private Integer id; private String name; private int age; private Date birth; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } }
-
持久层接口
package db.dao; import java.util.List; import db.bean.SUser; public interface ISUserDao { int saveUser(SUser user); int updateUser(SUser user); int deleteUserById(int id); SUser selectById(int id); List<SUser> selectByCondition(String name, int minAge, int maxAge); }
-
引入jar包
spring-jdbc-5.1.9.RELEASE.jar
和spring-tx-5.1.9.RELEASE.jar
是Spring jdbc编程的依赖包ojdbc6.jar
是jdbc编程的依赖包druid-1.1.23.jar
是阿里提供的第三方数据源实现的依赖jar包。 -
配置db.properties
url=jdbc:oracle:thin:@localhost:1521:xe user=root password=root driver=oracle.jdbc.OracleDriver maxWait=2000 initSize=3
-
配置log4j.properties,查看日志信息
log4j.rootLogger=INFO, stdout log4j.logger.org.mybatis.example=TRACE log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n log4j.logger.org.springframework.jdbc.core.JdbcTemplate=DEBUG
2.引入数据源,数据源配置
获取Connection对象有两种方式:
DirverManager:每次打开到数据源的物理连接,资源消耗大,效率低不利于分层架构中的事务管理
javax.sql.DataSource:对象代表了一个提供获取到物理数据源连接的工厂。相比较DriverManager,DataSource是获取Connection的首选方式。DataSource可能来自数据库提供商提供的实现,也可能是其他第三方的实现。
一、基于xml配置:
-
Spring提供的实现
org.springframework.jdbc.datasource.DriverManagerDataSource
jdbc_dao.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="db.dao"></context:component-scan> <context:property-placeholder location="db.properties"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value="${url}"></property> <property name="username" value="${user}"></property> <property name="password" value="${password}"></property> </bean> <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> </beans>
-
阿里提供的实现:
DruidDataSource
二、基于java_config:
-
Spring提供的实现
org.springframework.jdbc.datasource.DriverManagerDataSource
-
阿里提供的实现:
DruidDataSource
package db.config; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework