JdbcTemplate的使用

Spring为了各种支持的持久化技术,都提供了简单操作的模版和回调。

JdbcTemplate 简化 JDBC 操作
HibernateTemplate 简化 Hibernate 操作

下面列出几种熟悉的

aaarticlea/jpeg;base64,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SNY/arq38NNBtkGYnmDLiIt0PTHXkVPNrf1/J/5L7/vLXX9d0dlba9o97JNHa6tYzvApaZYrhGMYHUsAeAPeq2heKtH8RQzSafeQu0Lurx+ahdQrFdxAJ+U4yD3BFcnpCX9z4p8PXBbWp44beZLhrvTltooC0Y+RQI0OMr3LDgc5oOn39x4I1rRIra7S9jvpZmQwFRNEbgvhHddj7k7ZI5wRzVXt/XmC1+87jT9Y0zVhIdN1G0vBHjebadZNuemdpOKu1yWhWkNzr66p9r165mitWg36hZJbIqswO3HlRsxyMjGQOemRnrafQQUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAJU/495fqv9aiqVP8Aj3l+q/1qKgAqjqekWOrxxJeRMxhfzIpI5GjkjbplXQhl444NXqKAKOnaRZaUJfskTh5mDSyyyvLJIQMDc7kscDgZPHar1FFAivaWNtYmc28ez7RM08vzE7nOMnnp0HSrFFFAwqjqekWOrxxJeRMxhfzIpI5GjkjbplXQhl444NXqKAKOnaRZaUJfskTh5mDSyyyvLJIQMDc7kscDgZPHar1FFAgooooGFFFFABRRRQAUUUUAFUoNKs7fU7jUUjc3c6hHkkld8KOdqhiQozzhcA1dooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCvDY20F7c3kce2e5CCV9xO7aMLx0GAe1WKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALH2Kf+6v8A32v+NH2Kf+6v/fa/41eoqOZjsUfsU/8AdX/vtf8AGj7FP/dX/vtf8akh1OwuRAYL62lFwWEJSVW8zb97bg84wc46Vao5mFij9in/ALq/99r/AI0fYp/7q/8Afa/41eoo5mFij9in/ur/AN9r/jR9in/ur/32v+NXqKOZhYo/Yp/7q/8Afa/40fYp/wC6v/fa/wCNXqKOZhYo/Yp/7q/99r/jR9in/ur/AN9r/jV6ijmYWKP2Kf8Aur/32v8AjR9in/ur/wB9r/jV6ijmYWKP2Kf+6v8A32v+NH2Kf+6v/fa/41eoo5mFij9in/ur/wB9r/jR9in/ALq/99r/AI1eoo5mFiqlpMIJBtXJIx84/wAa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taKpu7v8yUrR5TJuNEFx4ns9ZM+BbWs1sYdmd/mMhznPGNnTHeqWkeHtT0aKDT7bWYv7It3/AHUJs8zhM5EZlLlSvbOzOO+ea6OiktP6+Y3qctc+DvtGia/pv2/b/a121z5nk58rOz5cbvm+51yOtS63oTzXd5q0crPINImslt1jyWLHcCDn2xjHeukopSimreVvwt+RSdnf+t7nG6B4Z1B7Xw9Nq2omaDTYFkgtTa+XIspj2/vW3fNtBYABV685IpYPBNzYQaO1jqsS3mmPcFJLi0MkTrMxJygdSGHADBvXjmuxoqpO7uRFWVjkF8ES/wDCPXmnyasZbq41Eait01uAFlDo4BQMMrlOmRwfxq7caDqZ1OHV7PVLWDUzbC2umeyZ4JlBLAiPzAykEnHzngnOeMdFRSt/Xyt+RX9fjf8AMgs4p4LSOO5uTczjl5dgQEk54UdAOgHJwBkk8meiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBw/1bfhTaKKQBRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9k=" alt="" />

Spring JDBC是Spring提供的持久层技术

简化JDBC API开发 ,使用上和Apache公司的DBUtils框架非常类似

1、使用JdbcTemplate快速入门

导入必要jar包到工程目录
导入Spring核心开发包到创建工程
  spring-beans-3.2.0.RELEASE.jar
  spring-context-3.2.0.RELEASE.jar
  spring-core-3.2.0.RELEASE.jar
  spring-expression-3.2.0.RELEASE.jar
还需要下载commons-logging日志包
  commons-logging-1.1.1.jar
集成log4j 导入log4j jar包
  com.springsource.org.apache.log4j-1.2.15.jar

  src下面:log4j.properties
导入JDBC模板开发包
  spring-jdbc-3.2.0.RELEASE.jar
  spring-tx-3.2.0.RELEASE.jar
数据库驱动

     @Test
// 无配置文件测试
public void demo1() {
// Spring 内置连接池
DriverManagerDataSource dataSource = new DriverManagerDataSource();
// 需要 jdbc 四个参数
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///spring3day2");
dataSource.setUsername("root");
dataSource.setPassword("abc"); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // 建个表
jdbcTemplate.execute("create table abcd(id int , name varchar(20))");
}

2、在实际开发中通过Spring 配置文件来配置 JdbcTemplate

配置三种数据库连接池

1)Spring数据源实现类DriverManagerDataSource

 <?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 http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- Spring内置连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///spring"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
</beans>

2)DBCP 数据源 BasicDataSource
 在原有jar上加入           com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
                    com.springsource.org.apache.commons.pool-1.5.3.jar

    配置dbcp 连接池
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///spring3day2"></property>
<property name="username" value="root"></property>
<property name="password" value="abc"></property>
<property name="initialSize" value="1" />
<property name="maxActive" value="30" />
<property name="maxIdle" value="30" />
<property name="minIdle" value="3" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="3600" />
<property name="testWhileIdle" value="true" />
<property name="validationQuery" value="select 1" />
<property name="validationQueryTimeout" value="1" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="numTestsPerEvictionRun" value="30" />
</bean>

3)C3P0 数据源  ComboPooledDataSource

在原有jar上加入    com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

     <!-- 配置c3p0 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring3"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>

3、 使Spring 配置文件引用外部 properties 属性文件 (配置jdbc连接参数)

<context:property-placeholder> 引入外部 properties 属性文件

 jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///spring
jdbc.username=root
jdbc.password=root applicationContext.xml
<!-- 引入外部 properties 文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置c3p0 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>

4、测试

 在applicationContext.xml中注册连接池
<!-- 将连接池注入 jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> public class JdbcTemplateTest {
@Test
// 使用配置文件 测试
public void demo2() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext
.getBean("jdbcTemplate"); jdbcTemplate.execute("create table abcd(id int , name varchar(20))");
}

5、jdbcTemplate API 分析
Spring为了 在DAO 中可以方便注入 Template 模板操作类, 提供了一组 DaoSupport 支持类

JdbcDaoSupport.java

 package org.springframework.jdbc.core.support;

 import java.sql.Connection;
import javax.sql.DataSource;
import org.springframework.dao.support.DaoSupport;
import org.springframework.jdbc.CannotGetJdbcConnectionException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.SQLExceptionTranslator; public abstract class JdbcDaoSupport extends DaoSupport
{ public JdbcDaoSupport()
{
} public final void setDataSource(DataSource dataSource)
{
if(jdbcTemplate == null || dataSource != jdbcTemplate.getDataSource())
{
jdbcTemplate = createJdbcTemplate(dataSource);
initTemplateConfig();
}
} protected JdbcTemplate createJdbcTemplate(DataSource dataSource)
{
return new JdbcTemplate(dataSource);
} public final DataSource getDataSource()
{
return jdbcTemplate == null ? null : jdbcTemplate.getDataSource();
} public final void setJdbcTemplate(JdbcTemplate jdbcTemplate)
{
this.jdbcTemplate = jdbcTemplate;
initTemplateConfig();
} public final JdbcTemplate getJdbcTemplate()
{
return jdbcTemplate;
} protected void initTemplateConfig()
{
} protected void checkDaoConfig()
{
if(jdbcTemplate == null)
throw new IllegalArgumentException("'dataSource' or 'jdbcTemplate' is required");
else
return;
} protected final SQLExceptionTranslator getExceptionTranslator()
{
return getJdbcTemplate().getExceptionTranslator();
} protected final Connection getConnection()
throws CannotGetJdbcConnectionException
{
return DataSourceUtils.getConnection(getDataSource());
} protected final void releaseConnection(Connection con)
{
DataSourceUtils.releaseConnection(con, getDataSource());
} private JdbcTemplate jdbcTemplate;
}

* 比如 DAO extends JdbcDaoSupport 注入 JdbcTemplate
* 比如 DAO extends HibernateDaoSupport 注入 HibernateTemplate

如果要实现DAO 增加、修改 、删除 JdbcTemplate.update(sql,Object... args)

使用DAO 查询
    1) 简单查询
        queryForInt
        queryForObject
    // 根据id 查询 name
    public String findNameById(int id) {
        String sql = "select name from person where id = ?";
        return this.getJdbcTemplate().queryForObject(sql, String.class, id);
    }

// 查询总记录数
    public int findByTotalCount() {
        String sql = "select count(*) from person";
        return this.getJdbcTemplate().queryForInt(sql);
    }
   
    2) 返回对象和对象集合的查询
        关键点,提供每条数据记录 如何 封装为对象 RowMapper的实现
        private class MyPersonRowMapper implements RowMapper<Person> {
            @Override
            // resultset 查询结果集
            // i 行号
            public Person mapRow(ResultSet rs, int i) throws SQLException {
                // 要将 当前结果集 指定行 数据 封装到 Person 对象
                Person person = new Person();
                person.setId(rs.getInt("id"));
                person.setName(rs.getString("name"));
                person.setCity(rs.getString("city"));
                return person;
            }
        }

使用jdbcTemplate 实现DAO ,完成CURD 功能

1、创建数据库表

 create table person(
id int primary key auto_increment,
name varchar(20),
city varchar(40)
);

2、Person.java

 package cn.itcast.domain;

 public class Person {
private int id;
private String name;
private String city; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", city=" + city + "]";
} }

3、PersonDAO.java

 package cn.itcast.dao;

 import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; import cn.itcast.domain.Person; /**
* 实现 Person表 增删改查 ,使用JdbcTemplate
*
* @author seawind
*
*/
public class PersonDAO extends JdbcDaoSupport {
// 需要向PersonDAO 注入 JdbcTemplate public Person findById(int id) {
String sql = "select * from person where id = ?";
return this.getJdbcTemplate().queryForObject(sql,
new MyPersonRowMapper(), id);
} public List<Person> findAll() {
String sql = "select * from person";
return this.getJdbcTemplate().query(sql, new MyPersonRowMapper());
} // 必须提供手动封装类,完成每条记录 到 Person 对象封装
private class MyPersonRowMapper implements RowMapper<Person> {
@Override
// resultset 查询结果集
// i 行号
public Person mapRow(ResultSet rs, int i) throws SQLException {
// 要将 当前结果集 指定行 数据 封装到 Person 对象
Person person = new Person();
person.setId(rs.getInt("id"));
person.setName(rs.getString("name"));
person.setCity(rs.getString("city"));
return person;
}
} // 根据id 查询 name
public String findNameById(int id) {
String sql = "select name from person where id = ?";
return this.getJdbcTemplate().queryForObject(sql, String.class, id);
} // 查询总记录数
public int findByTotalCount() {
String sql = "select count(*) from person";
return this.getJdbcTemplate().queryForInt(sql);
} public void save(Person person) {
String sql = "insert into person values(null,?,?)";
this.getJdbcTemplate().update(sql, person.getName(), person.getCity());
} public void update(Person person) {
String sql = "update person set name=? , city=? where id = ?";
this.getJdbcTemplate().update(sql, person.getName(), person.getCity(),
person.getId());
} public void delete(Person person) {
String sql = "delete from person where id = ?";
this.getJdbcTemplate().update(sql, person.getId());
}
}

4、PersonDAOTest.java

 package cn.itcast.test;

 import java.util.List;

 import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import cn.itcast.dao.PersonDAO;
import cn.itcast.domain.Person; /**
* 使用Spring 测试
*
* @author seawind
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class PersonDAOTest {
@Autowired//可以完成自动装配 无需提供setter方法
private PersonDAO personDAO; // 测试添加
@Test
public void testSave() {
Person person = new Person();
person.setName("小明");
person.setCity("北京"); personDAO.save(person);
} @Test
// 测试修改
public void testUpdate() {
Person person = new Person();
person.setId(1);
person.setName("小明");
person.setCity("上海"); personDAO.update(person);
} @Test
// 测试删除
public void testDelete() {
Person person = new Person();
person.setId(1); personDAO.delete(person);
} @Test
// 测试简单查询
public void testSimpleSelect() {
String name = personDAO.findNameById(2);
System.out.println(name);
System.out.println(personDAO.findByTotalCount());
} @Test
// 根据id 查询
public void testFindById() {
Person person = personDAO.findById(2);
System.out.println(person);
} @Test
// 查询所有数据
public void testFindAll() {
List<Person> persons = personDAO.findAll();
System.out.println(persons);
} }

5、applicationContext.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 http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置数据库连接池 -->
<!-- 引入外部 properties 文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置c3p0 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean> <!-- 将连接池注入 jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- 配置DAO -->
<bean id="personDAO" class="cn.itcast.dao.PersonDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>

JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件的更多相关文章

  1. SpringBoot2 集成三种连接池 c3p0 hikari druid

    Hikari 1.首先集成 hikari springboot默认集成,只需要简单的配置即可 1.1 首先导入包 <dependency> <groupId>com.zaxxe ...

  2. spring hibernate4 c3p0连接池配置

    c3p0-0.9.1.2.jar,c3p0-oracle-thin-extras-0.9.1.2.jar,点此下载 <bean id="dataSource" class=& ...

  3. Spring之c3p0连接池配置和使用

    1.导入包:c3p0和mchange包 2.代码实现方式: package helloworld.pools; import com.mchange.v2.c3p0.ComboPooledDataSo ...

  4. redis(三)----连接池配置

    1. 目录结构: 2. 测试源码 package com.redis; import redis.clients.jedis.Jedis; import redis.clients.jedis.Jed ...

  5. redis《三》连接池配置参数

    参数 值 setTestWhileIdle() 在空闲时检查有效性 true setMinEvictableIdleTimeMillis() 连接最小空闲时间 1800000L setTimeBetw ...

  6. spring 使用c3po连接池

    1 数据源:能够简单理解为数据的来源. 2 连接池:是缓存一定数量的数据库连接,当程序须要数据库连接的时候,直接在连接池中获取空暇的连接,使用完再放回连接池中,此连接又变成空暇状态,等待下一次连接. ...

  7. 【转】SSH中 整合spring和proxool 连接池

    [摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简 ...

  8. springboot 多数据源(三种数据库连接池--JDBC,dbcp2,Druid)

    本文使用的是springboot2.0(在配置数据源时和springboot1.X略有区别) 首先:springboot默认支持的连接池有dbcp,dbcp2, tomcat, hikari四种连接池 ...

  9. 【Mysql】SpringBoot阿里Druid数据源连接池配置

    一.pom.xml添加 <!-- 配置数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> &l ...

随机推荐

  1. c++工程vs导入工程时发生LNK1207

    I have installed VS 2012 , but i have VS 2010 also. After I open  VS 2010 projects with VS 2012 and  ...

  2. 【项目启动】 tomcat启动,项目无法启动,无法正常访问/项目可以启动,报错:java.lang.ClassNotFoundException: ContextLoaderListener

    使用maven搭建项目(这个错误和是不是使用maven搭建项目没有关系),然后部署到tomcat中运行. 出现问题1: tomcat跑起来了,但是启动时间很短,没有报错,项目不能正常访问 项目启动时间 ...

  3. Hark的数据结构与算法练习之珠排序

    ---恢复内容开始--- 算法说明 珠排序是分布排序的一种. 说实在的,这个排序看起来特别的巧妙,同时也特别好理解,不过不太容易写成代码,哈哈. 这里其实分析的特别好了,我就不画蛇添足啦.  大家看一 ...

  4. 登录Cloudera Manager时报错org.hibernate.exception.GenericJDBCException: Could not open connection

    去Cloudera Server上边看了一下日志: cat /opt/cloudera-manager/log/cloudera-scm-server/cloudera-scm-server.log ...

  5. Oracle创建表空间和表

    创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablesp ...

  6. Android 编程下 App Install Location

    从 API 8 开始(参考官方文档:App Install Location | Android Developers),你可以将你的应用安装在外部储存中(例如,安装到设备的 SD 卡上).这是一个可 ...

  7. 【分享送书】NGUI全面实践教程V3.8.2 活动开始了!!

    [分享送书]NGUI全面实践教程V3.8.2 活动开始了!! 活动奖品:   活动地址:http://dwz.cn/JHdlu

  8. D FFF团的怒火

    Time Limit:1000MS  Memory Limit:65535K 题型: 编程题   语言: 无限制 描述 在信软学院,男女比例失衡已经是习以为常的事情. 在这样的一个学院,诞生了一个神秘 ...

  9. 模拟 Coder-Strike 2014 - Round 1 A. Poster

    题目地址:http://codeforces.com/problemset/problem/412/A /* 模拟:题目没看懂,但操作很简单,从最近的一头(如果不在一端要先移动到一端)往另一头移动,顺 ...

  10. POJ2186 Popular Cows(强连通分量)

    题目问一个有向图所有点都能达到的点有几个. 先把图的强连通分量缩点,形成一个DAG,那么DAG“尾巴”(出度0的点)所表示的强连通分量就是解,因为前面的部分都能到达尾巴,但如果有多个尾巴那解就是0了, ...