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将数据库访问过程中的模 ...
随机推荐
- Java并发编程(一):并发与高并发等基础概念
并发概念 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态.如果运行在多核处理器上,程序中的每个线程都将 ...
- 两个优秀的C标准库源代码
gnu的基本看不懂,因为套了一层又一层复杂的东西. 我现在能看懂的2个c标准库是openbsd的,还有一个嵌入c的库. https://github.com/openbsd/src/tree/mast ...
- Bash编程的难点
Bash作为一个编程语言,有很多奇怪的表达字符,有时候会让人感到很费解,其实,只要我们弄清楚bash面临的问题 就能够理解为啥要这么搞了,举个例子: 1.比较字符串"ab"和&qu ...
- JVM性能调优入门
1. 背景 虽然大多数应用程序使用JVM的默认设置就能很好地工作,仍然有不少应用程序需要对JVM进行额外的配置才能达到其期望的性能要求. 现在JVM为了满足各种应用的需要,为程序运行提供了大量的JVM ...
- Android实现微信自己主动抢红包的程序
简单实现了微信自己主动抢红包的服务,原理就是依据keyword找到对应的View, 然后自己主动点击.主要是用到AccessibilityService这个辅助服务,基本能够满足自己主动抢红包的功能, ...
- redis 服务相关
一 什么是redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开 ...
- vs2010 MSDN文档安装方法
vs2010的MSDN是不能独立安装,必须安装VS2010后才能安装. 安装方法: 1.vs2010的ISO光盘文件中,里面会有个ProductDocumentation文件夹,其实这个就是安装MSD ...
- Discuz!X3.2修改用户名注册长度限制的方法
Discuz!X3.2用户名注册长度限制为15个字符,有些站长朋友觉得太短,需要改的长一点,但是很多人都不知道怎么修改,下面就告诉大家如何修改这个限制.按照以下步骤来就可以了! 1.打开 ) { ...
- linux学习笔记13--命令head和tail
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...
- 初探csrf学习笔记
以下是学习了对CSRF的理解,大家切勿作为标准,如有出错请告之! 严禁转载.不想拿自己刚学到的知识去[误人子弟]之所以写出来是让自己巩固和增加理解,他日对此文有不当之处自会修改. [00x1]csrf ...