SSH|Spring基础(3)

Spring进阶 1. 基于AspectJ的注解AOP 使用注解方式实现AOP操作 (1)创建对象 (2)开启AOP操作的自动代理 String sql ="update user set username=? where username=?"; jdbcTemplate.update(sql, "admin","Admin");
String sql ="delete from user where username=?"; jdbcTemplate.update(sql, "admin"); (5)JdbcTemplate实现查询 使用接口RowMapper,JdbcTemplate针对这个接口没有实现类,得到不同类型的数据需要自己进行封装 (a)查询返回某一个值 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String sql = "select count(*) from user"; Integer count = jdbcTemplate.queryForObject(sql, Integer.class); (b)查询返回对象 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String sql = "select * from user where username=?"; User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "tom"); System.out.println(user);
// 定义RowMapper的实现类 class MyRowMapper implements RowMapper{ @Override public User mapRow(ResultSet rs, int num) throws SQLException { // 从结果集中获取数据 String username = rs.getString("username"); String password = rs.getString("password"); // 将数据封装到对象中 User user = new User(); user.setPassword(password); user.setUsername(username); return user; } } (c)查询返回list集合 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String sql = "select * from user"; List user = jdbcTemplate.query(sql, new MyRowMapper()); System.out.println(user);

3. Spring配置连接池 1. 配置c3p0连接池 (1)导入c3p0的jar包 mchange-commons-java-0.2.3.4.jar c3p0-0.9.2.1.jar (2)创建Spring配置文件,配置连接池 2. service和dao注入操作 (1)创建service和dao对象,在Service中注入了dao对象 (2)创建JdbcTemplate对象,并注入到dao中 (3)在JdbcTemplate中注入dataSource 4. Spring事务管理 1. 事务概念 2. Spring进行事务管理API (1)Spring事务管理的两种方式: (a)编程式事务管理(不用) (b)声明式事务管理 基于XML配置文件 基于注解方式 (2)主要的API (1)接口PlatformTransactionManager事务管理器 Spring为不同的持久层框架提供了不同的实现类 Spring JDBC:DataSourceTransactionManager Hibernate:HibernateTransactionManager (3) 首先配置事务管理器 应用: 搭建转账环境 (1)创建数据库表 User Account (2)创建Service和Dao以及注入关系 3. Spring进行事务配置(声明式) (1)基于XML配置文件 使用AOP思想进行配置 (a)配置事务管理器 【SSH|Spring基础(3)】 (b)配置事务增强 (c)配置切面、切入点
(2)基于注解方式 (a)配置事务管理器
(b)配置事务注解
(c)在要使用事务的方法所在的类上添加注解 @Transactional public class OrderService { private OrderDao orderDao; public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } public void doAccount(){ orderDao.descSalary(); // 出现异常 int i = 1/0; orderDao.incrSalary(); } }

    推荐阅读