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.RELEASE
- org.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.jar
- org.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 这里模拟了一个"银行账户"的类 一个余额属性,一个存款方法,一个撤销账户的方法,一个转账的 ... 
