Spring 框架的JDBC模板技术
1. 概述
- Spring 框架提供了很多持久层的模板类来简化编程;
 - Spring 框架提供的JDBC模板类: 
JdbcTemplate 类; - Spring 框架提供的整合 Hibernate 框架的模板类: 
HibernateTemplate 类 
2. 环境搭建
2.1 创建数据库表结构
CREATE TABLE t_account(
    id  INT PRIMARY KEY AUTO_INCREMENT,
    name  VARCHAR(20),
    money  DOUBLE
);
2.2 导入 jar 包
- Spring 框架的基本开发包(6个);
 - Spring 的传统AOP的开发包
spring-aop-4.3.10.RELEASEorg.aopalliance-1.10.0(在 Spring 依赖包中)
 - aspectJ 的开发包
org.aspectj.weave-1.6.8.RELEASE.jar(在 Spring 依赖包中)spring-aspects-4.3.10.RELEASE.jar
 - JDBC 模板所需 jar 包
mysql-connector-java.jar: MySql 驱动包;Spring-jdbc.jar;Spring-tx.jar: Spring 事务包;
 
2.3 编写测试代码
// 第一种方式: 采用 new 对象的方式完成
@Test
public void fun(){
    // 使用 Spring 内置的连接池,创建连接池
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/mydb2");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    // 创建模板类
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    // 完成数据添加
    JdbcTemplate.update("INSERT INTO t_account VALUES(null,?,?)","张三",1000);
}
// 第二种方式: 采用 IOC 的方式
// applicationContext.xml 配置
    <!-- 配置连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb2"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</beaen>
    <!-- 配置 JDBC 的模板类 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
    // 测试类
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class Demo2{
        @Resource(name="jdbcTemplate")
        private JdbcTemplate jdbcTemplate;
        @Test
        public void fun(){
            // update(String sql, Object...params); 可以完成增删改操作
            jdbcTemplate.update("INSERT INTO t_account VALUES(null,?,?)","张三",1000);
        }
        @Test
        public void fun2(){
            // 查询
            // 第一种方式: 通过主键查询一条记录
            // queryForObject(String sql, RowMapper<T> rowMapper, Object... params)
    Account ac = jdbcTemplate.queryForObject("SELECT * FROM t_account WHERE id=?",
                                            new BeanMapper(),1);
        }
        @Test
        public void fun3(){
            // 查询
            // 第二种方式: 查询所有
            // query(String sql, RowMapper<T> rowMapper, Object... params)
    List<Account> ac = jdbcTemplate.query("SELECT * FROM t_account",new BeanMapper());
        }
    }
    // 自己手动的来封装数据(一行一行的封装)
    public class BeanMapper implements RowMapper<Account>{
        public Account mapRow(ResultSet rs, int rowNum) throws SQLException{
            Account ac = new Account();
            ac.setId(rs.getInt("id"));
            ac.setName(rs.getString("name"));
            ac.setMoney(rs.getDouble("money"));
            return ac;
        }
    }
// javaBean 用于封装查询到的结果
public class Account{
    private Integer id;
    private String name;
    private Double money;
    get 和 set 方法...
}
3. Spring 框架管理开源的连接池
3.1 管理 DBCP 连接池
- 引入 DBCP 的 jar 包
org.apache.commong.dbcp-1.2.2.osgi.jarorg.apache.commons.pool-1.5.3.jar
 - 编写配置文件
 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb2"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>
3.2 管理 C3P0 连接池
- 引入 c3p0 的 jar包
com.mchange.v2.c3p0-0.9.1.2.jar
 - 编写配置文件
 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb2"/>
    <property name="user" value="root"/>
    <property namem="password" value="root"/>
</bean>
参考资料
Spring 框架的JDBC模板技术的更多相关文章
- Spring框架的JDBC模板技术和事物
		
Spring框架的JDBC模板技术 技术分析之Spring框架的JDBC模板技术概述 1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 ...
 - Spring框架的JDBC模板技术概述
		
1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2. 提供了JDBC模板,Spring框架提供的 * JdbcTemplate类 3. Spring框架可以整 ...
 - 演示Spring框架的JDBC模板的简单操作
		
1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...
 - spring框架总结(04)----介绍的是Spring中的JDBC模板
		
1.1 Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...
 - 解析Spring第四天(Spring中的事物、Spring框架来管理模板类)
		
JDBC模板技术: Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 template 模板 都是Spring框架提供XxxTemplate 提供了JDBC模板,Sp ...
 - Spring框架之jdbc源码完全解析
		
Spring框架之jdbc源码完全解析 Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现: 1.指定数据库连接参数 2.打开数据库连接 3.声明SQL语句 4.预编译并执行SQL语句 ...
 - Spring中的JDBC模板类入门
		
1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...
 - 使用Spring框架来管理模板类
		
1. 刚才编写的代码使用的是new的方式,应该把这些类交给Spring框架来管理. 2. 修改的步骤如下 applicationContext.xml中<beans>标签的开头配置为: * ...
 - spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)
		
Spring提供的JDBC框架负责管理资源和异常处理,从而可以简化开发者的JDBC代码.开发者只需要编写写入和读取数据库相关的代码即可. 正如在之前的小节中论述过的,Spring将数据库访问过程中的模 ...
 
随机推荐
- log4j使用示例
			
### set log levels ### log4j.rootLogger = INFO , D #INFO , C , D , E ### console ### #log4j.appender ...
 - 最全面的 Sublime Text 使用指南
			
最全面的 Sublime Text 使用指南 摘要(Abstract) 本文系统全面的介绍了Sublime Text,旨在成为最优秀的Sublime Text中文教程. 前言(Prologue) ...
 - 文件上传之 commons-fileupload(二)
			
对commons fileupload上传组件的简单封装 在上一篇文章<利用Jakarta commons fileupload组件实现多文件上传>中,我介绍了commons fileup ...
 - Unity中使用ulua的个人经验总结
			
热度 286052 2015-3-15 14:32 |个人分类:技术类| Lua Lua代码都是运行时才编译的,不运行的时候就如同一张图片.一段音频一样,都是文件:所以更新逻辑只需要更新脚本,不需要再 ...
 - IDEA2017 导入 SVN上的  Myeclipse或Eclipse 项目
			
从SVN上检出项目,不用打开. 关闭IDEA后选择 import project,导入后按F4 (改成eclipse按键模式后 按ctrl alt shift F4)进入 project struct ...
 - uGUI Anchor
			
Anchor定位:inspector面板的Rect Transform组件中PosX左边的方框图标就是设置锚点的,做界面自适应时可定位控件在视图中的位置,与NGUI类似.Anchor+Canvas的C ...
 - tf命令总结
			
$/AutoBuild/WpfApp/WpfApp/MainWindow.xaml 发现tf workspaces /collection:http://192.168.175.117:8080/tf ...
 - mogndb 慢查询
			
0 摘要 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的 ...
 - HBase MemStore与HStoreFile 的大小分析
			
Sumary: MemStore结构 KeyValue构成细节 HFile分析 Maven 项目例子使用了Maven来管理Dependency,要运行例子,需要有maven环境,后面提到的HFile, ...
 - [转]NBehave行为驱动测试关于story和scenarios
			
原文: Behavior-Driven Development with NBehave 这里模拟了一个"银行账户"的类 一个余额属性,一个存款方法,一个撤销账户的方法,一个转账的 ...