先看beans4.xml,这是spring配置文件,放在src源文件夹下
看配置文件就知道要用哪些包,dbcp,mysql连接,spring核心包,
然后注解事务声明主要分三步,1.声明事务管理器,2.开启注解,3.类中插入注解使用
1.声明事务管理得配数据源吧,毕竟是数据操作的事务,
2.开启注解得知道为哪个事务管理器开启吧
3.这个在service里插入@Transactional即可
代码我都贴上了大家一看就懂,文章末附上这个小项目的源代码
package cn.midai.dao;
/**
* dao类实现底层sql语句,
* 通过spring封装JdbcTemplate实现
* @author yym
*
*/
import org.springframework.jdbc.core.JdbcTemplate;
public class DaoMoney {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void lessMoney(){
String sql="update t_bank set counts=counts-? where username=? ";
jdbcTemplate.update(sql, 1000, "1");
}
public void MoreMoney(){
String sql="update t_bank set counts=counts+? where username=? ";
jdbcTemplate.update(sql, 1000, "2");
}
}
package cn.midai.service;
import org.springframework.transaction.annotation.Transactional;
import cn.midai.dao.DaoMoney;
/**
* service服务层实现dao层方法
* @author yym
*
*/
@Transactional
public class ServiceMoney {
private DaoMoney daoMoney;
public void setDaoMoney(DaoMoney daoMoney) {
this.daoMoney = daoMoney;
}
//调用dao的方法
public void accountMoney(){
daoMoney.lessMoney();
int a = 10/0;
daoMoney.MoreMoney();
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.midai.service.ServiceMoney;
/**
* 声明事务(注解)
* @author yym
*
*/
public class test {
/*bean.xml 声明事务管理, */
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("beans4.xml");
ServiceMoney sm = (ServiceMoney) ac.getBean("serviceMoney");
sm.accountMoney();
}
}
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/d_spring
jdbc.username=root
jdbc.password=2017
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n