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事务
2 准备数据库 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
数据库 书写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模板,从父类方法中获得即可

JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
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中的事物
    文章图片
    配置读取指定配置
  • 【JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物】配置读取配置中的值作为配置中的值

    JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
    文章图片
    图片.png
Spring中aop事务 Spring封装了事务管理的代码
  • 打开事务
  • 提交事务
  • 回滚事务
事务操作对象 因为在不同平台,操作事务的代码各不相同,所以Spring提供了一个接口
  • PlatformTransactionManager 接口
    • JDBC平台 DataSourceTransactionManager
    • HibernateTransitionManager
      **在Spring中玩事务管理,最为核心的对象就是TransactionManager对象
Spring管理事务的属性介绍 事务的隔离级别
是否只读
事务的传播行为
JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
事务传播行为 Spring管理事物方式 编码式
将核心事务管理器配置到Spring容器 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
配置核心事务管理器 配置TransactionTemplate模板 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
配置TransactionTemplate模板.png 将事务模板注入Service JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
将事务模板注入Service.png 在Service中调用模板 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
Service中调用模板 aop xml配置方式
导包
aop aspect aop联盟 weaving织入包

导入新的约束(tx) JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
图片.png beans: 最基本
context:读取properties配置
aop:配置aop
tx:配置事务通知
配置通知 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
图片.png 配置将通知织入目标 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
通知织入目标 注解配置
导包
aop aspect aop联盟 weaving织入包

导入新的约束(tx) JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
图片.png 开启注解管理事务 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
开启注解管理事务 使用注解 JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
图片.png JAVAEE框架学习——Spring——整合JDBC|JAVAEE框架学习——Spring——整合JDBC aop中的事物
文章图片
图片.png

    推荐阅读