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将数据库访问过程中的模 ...
随机推荐
- 多线程-ThreadLocal,InheritableThreadLocal
ThreadLocal 变量值得共享可以使用public static变量的形式,所有的线程都使用同一个public static变量.如果想实现每一个线程都有自己的共享变量该如何解决呢?JDK中提供 ...
- 【大话QT之十三】系统软件自己主动部署实现方案
本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...
- jks & pfk
keytool and jks keytool Name keytool - Key and Certificate Management Tool Manages a keystore (datab ...
- 无语的Filezilla
之前也一直用filezilla,今天遇到个奇葩问题:在2008R2上装完filezilla server,本打算生成个证书用于SSL加密,没想到一直报错"Failed to initiali ...
- Django 图片路径问题
在 django 中不像PHP那样有根目录的概念 而取而代之的是包的概念, 通过URLS.PY 来提供每个URL 对应的DJANGO的 函数来显示页面 在包的 temolates目录中 的html页面 ...
- 元器件封装标准IPC-7351
IPC-7351依赖久经考验的数学算法,综合考虑制造.组装和元件容差,从而精确计算焊盘图形.该标准以IPC-SM-782研发概念为基础进一步提高,对每一个元件都建立了三个焊盘图形几何形状,对每一系列元 ...
- Python之pandas
official document: http://pandas.pydata.org/pandas-docs/stable/10min.html 基本数据结构:http://www.open-ope ...
- java网络编程4-ServerSocket
//端口号为0则系统随机分配端口,连接队列系统一般默认50,指过超过系统最大的就以系统为准 //如果客户端的连接超过连接队列,则会被主机拒绝 ServerSocket serverSocket=new ...
- Dependency Property 依赖属性
依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性.拥有依赖属性的对象称为“依赖对象”. WPF开发中,必须使用依赖对象作为依赖属性的宿主,使二者结合起来 ...
- Linux shell(. /path/filename)
在 /etc/profile 文件中,有一段脚本: if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi 这里的 “点号 + 空格 + 文件” ...