Spring JdbcTemplate

1.概述

  • 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架。
  • 作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法,通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。
  • 可以将Spring的JdbcTemplate看作是一个小型的轻量级持久化层框架,和DBUtils风格非常接近。

2.搭建JdbcTemplate环境

2.1导入JAR包

  1. IOC容器所需要的JAR包
    commons-logging-1.1.1.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
  2. JdbcTemplate所需要的JAR包
    spring-jdbc-4.0.0.RELEASE.jar
    spring-orm-4.0.0.RELEASE.jar
    spring-tx-4.0.0.RELEASE.jar
  3. 数据库驱动和数据源
    druid-1.1.9.jar
    mysql-connector-java-5.1.7-bin.jar

2.2创建连接数据库基本信息属性文件

user=root
password=root
jdbcUrl=jdbc:mysql:///query_data
driverClass=com.mysql.jdbc.Driver
initialPoolSize=30
minPoolSize=10
maxPoolSize=100
acquireIncrement=5
maxStatements=1000
maxStatementsPerConnection=10

2.3在Spring配置文件中配置相关的bean

数据源对象

<context:property-placeholder location="classpath:jdbc.properties"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="user" value="${user}"/>
	<property name="password" value="${password}"/>
	<property name="jdbcUrl" value="${jdbcUrl}"/>
	<property name="driverClass" value="${driverClass}"/>
	<property name="initialPoolSize" value="${initialPoolSize}"/>
	<property name="minPoolSize" value="${minPoolSize}"/>
	<property name="maxPoolSize" value="${maxPoolSize}"/>
	<property name="acquireIncrement" value="${acquireIncrement}"/>
	<property name="maxStatements" value="${maxStatements}"/>
	<property name="maxStatementsPerConnection" value="${maxStatementsPerConnection}"/>
bean>

JdbcTemplate对象

<bean id="template" 
class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource" ref="dataSource"/>
bean>

2.4持久化操作

  1. 增删改
    JdbcTemplate.update(String, Object…)
  2. 批量增删改
    JdbcTemplate.batchUpdate(String, List)
    Object[]封装了SQL语句每一次执行时所需要的参数
    List集合封装了SQL语句多次执行时的所有参数
  3. 查询单行
    JdbcTemplate.queryForObject(String, RowMapper, Object…)
  4. 查询多行
    JdbcTemplate.query(String, RowMapper, Object…)
    RowMapper对象依然可以使用BeanPropertyRowMapper
  5. 查询单一值
    JdbcTemplate.queryForObject(String, Class, Object…)

2.5使用JdbcTemplate实现Dao

通过IOC容器自动注入

JdbcTemplate类是线程安全的,所以可以在IOC容器中声明它的单个实例,并将这个实例注入到所有的Dao实例中。

@Repository
public class EmployeeDao {
	
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	public Employee get(Integer id){
		//…
	}
}

你可能感兴趣的:(spring,java,mysql,数据库)