事务管理的实现在spring xml 配置aop 自动生成代理,进行事务的管理
1.配置管理器
2.配置事务详情
3.配置aop
代码结构
Dao层接口类
package com.qst.b_tx;
public interface AccountDao {
public void out(String outer, Integer money);
public void in(String inner, Integer money);
}
接口实现
package com.qst.b_tx;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {
@Override
public void out(String outer, Integer money) {
this.getJdbcTemplate().update("update account set money = money - ? where username = ?", money,outer);
}
@Override
public void in(String inner, Integer money) {
this.getJdbcTemplate().update("update account set money = money + ? where username = ?", money,inner);
}
}
service接口
package com.qst.b_tx;
public interface AccountService {
public void transfer(String outer,String inner, Integer money);
}
接口实现
package com.qst.b_tx;
public class AccountServiceImpl implements AccountService{
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void transfer(String outer, String inner, Integer money) {
accountDao.out(outer, money);
accountDao.in(inner, money);
}
}
配置文件
package com.qst.b_tx;
public class AccountServiceImpl implements AccountService{
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void transfer(String outer, String inner, Integer money) {
accountDao.out(outer, money);
accountDao.in(inner, money);
}
}
测试类
package com.qst.b_tx;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
public static void main(String[] args) {
String xmlPath = "com/qst/b_tx/applicationContext.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
AccountService accountService =(AccountService) applicationContext.getBean("accountService");
accountService.transfer("jack", "rose", 1000);
}
}
数据库创建代码
create database ee19_spring_day03;
use ee19_spring_day03;
create table account(
id int primary key auto_increment,
username varchar(50),
money int
);
insert into account(username,money) values('jack','10000');
insert into account(username,money) values('rose','10000');