JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
Spring整合JDBC
Spring中提供了一个可以操作数据库的对象,封装了JDBC技术
JDBCTemplate => JDBC模板对象
与DBUtils中的QueryRunner非常相似
//准备连接池
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://103.249.130.173:3306/hibernate_crm?useUnicode=true&
characterEncoding=UTF8");
dataSource.setUser("appUser");
dataSource.setPassword("AA1122BB");
//创建JDBC模板对象
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(dataSource);
//书写sql语句并执行
String sql = "insert into t_user values(null,'rose')";
jt.update(sql);
Spring整合Dao 数据库 步骤
1 导包
- 4+2 spring包
- spring-test、spring-aop、junit4类库
- c3p0连接池 JDBC驱动
- spring-jdbc spring-tx事务
文章图片
数据库 书写Dao
public interface TUserDao {
//增
void save(TUser user);
//删除
void delete(Integer id);
//改
void update(TUser user);
//查
TUser getById(Integer id);
int getTotalCount();
List getAllTUser();
}
书写实现类impl
public class TUserDaoImpl implements TUserDao {
private JdbcTemplate jt;
@Override
public void save(TUser user) {
String sql = "insert into t_user values(null,?)";
jt.update(sql, user.getName());
}@Override
public void delete(Integer id) {
String sql = "delete from t_user where id = ?";
jt.update(sql, id);
}@Override
public void update(TUser user) {
String sql = "update t_user set name = ? where id =?";
jt.update(sql, user.getName(), user.getId());
}@Override
public TUser getById(Integer id) {
String sql = "select * from t_user where id = ?";
TUser tUser = jt.queryForObject(sql, new RowMapper() {
@Override
public TUser mapRow(ResultSet resultSet, int i) throws SQLException {
TUser tUser = new TUser();
tUser.setId(resultSet.getInt("id"));
tUser.setName(resultSet.getString("name"));
return tUser;
}
}, id);
return tUser;
}@Override
public int getTotalCount() {
String sql = "select count(*) from t_user";
Integer count = jt.queryForObject(sql, Integer.class);
return count;
}@Override
public List getAllTUser() {
String sql = "select * from t_user";
List query = jt.query(sql, new RowMapper() {
@Override
public TUser mapRow(ResultSet resultSet, int i) throws SQLException {
TUser tUser = new TUser();
tUser.setId(resultSet.getInt("id"));
tUser.setName(resultSet.getString("name"));
return tUser;
}
});
return query;
}public JdbcTemplate getJt() {
return jt;
}public void setJt(JdbcTemplate jt) {
this.jt = jt;
}
}
实现配置
进阶内容 JDBCDaoSupport
JDBCDapSupport根据连接池创建JDBC模板
不需要手动准备JDBC模板,从父类方法中获得即可
文章图片
JDBCSupport 继承JDBCDaoSupport后,需要直接注入连接池就可以了
读取外部的Properties
- 编写.properties文件
为防止properties key键冲突 需要添加前缀 例如 test.key jdbc.key
jdbc.jdbcUrl=jdbc:mysql://xxxxxxxxxx;
characterEncoding=UTF8
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=xxxxx
jdbc.password=xxxxxx
- 配置指定读取spring db.properties配置
文章图片
配置读取指定配置 - 【JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物】配置读取配置中的值作为配置中的值
文章图片
图片.png
- 打开事务
- 提交事务
- 回滚事务
- PlatformTransactionManager 接口
- JDBC平台 DataSourceTransactionManager
- HibernateTransitionManager
**在Spring中玩事务管理,最为核心的对象就是TransactionManager对象
是否只读
事务的传播行为
文章图片
事务传播行为 Spring管理事物方式 编码式
将核心事务管理器配置到Spring容器
文章图片
配置核心事务管理器 配置TransactionTemplate模板
文章图片
配置TransactionTemplate模板.png 将事务模板注入Service
文章图片
将事务模板注入Service.png 在Service中调用模板
文章图片
Service中调用模板 aop xml配置方式
导包
aop
aspect
aop联盟
weaving织入包
导入新的约束(tx)
文章图片
图片.png beans: 最基本
context:读取properties配置
aop:配置aop
tx:配置事务通知
配置通知
文章图片
图片.png 配置将通知织入目标
文章图片
通知织入目标 注解配置
导包
aop
aspect
aop联盟
weaving织入包
导入新的约束(tx)
文章图片
图片.png 开启注解管理事务
文章图片
开启注解管理事务 使用注解
文章图片
图片.png
文章图片
图片.png
推荐阅读
- android第三方框架(五)ButterKnife
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习