SpringBoot集成MyBatis开启事务

来源:互联网 发布:腐烂国度优化 编辑:程序博客网 时间:2024/06/06 04:05

需要要serviceImple类里添加二个注解

@Transactional()所有的方法都使用事务

@Transactional(readOnly=true)  readOnly=true该方法不使用事务

[java] view plain copy
  1. package cn.et.ssmboot.service.impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Service;  
  7. import org.springframework.transaction.annotation.Transactional;  
  8.   
  9. import cn.et.ssmboot.dao.EmpDao;  
  10. import cn.et.ssmboot.entity.Emp;  
  11. import cn.et.ssmboot.service.EmpService;  
  12. import cn.et.ssmboot.utils.PageEntity;  
  13. import cn.et.ssmboot.utils.PageUtils;  
  14.   
  15.   
  16. /** 
  17.  * 服务层掉用dao层的方法  
  18.  * @author Administrator 
  19.  * @Transactional()所有的方法都使用事务 
  20.  * 除query 
  21.  */  
  22. @Transactional()  
  23. @Service  
  24. public class EmpServiceImpl implements EmpService {  
  25.   
  26.     //自动装配  
  27.     @Autowired  
  28.     private EmpDao dao;  
  29.       
  30.       
  31.     /* 查询 
  32.      * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) 
  33.      * readOnly=true该方法不使用事务 
  34.      */  
  35.     @Transactional(readOnly=true)  
  36.     public PageEntity query(String ename,int curPage){  
  37.         //获取到总条数  
  38.         int total = dao.queryCount(ename);  
  39.         //再创建PageEntity实体类把当前页,每页显示多少条数据和总共多少条数据传进去  
  40.         PageEntity pe = PageUtils.calc(curPage, 10, total);  
  41.         List list = dao.queryPage(ename, pe.getStartIndex(), pe.getEndIndex());  
  42.         pe.setData(list);  
  43.         return pe;  
  44.     }  
  45.       
  46.     /* 新增 
  47.      * @see cn.et.emp.dao.impl.EmpDao#add(java.lang.String, java.lang.String) 
  48.      */  
  49.     public void add(String ename,String sal){  
  50.         dao.add(ename, sal);  
  51.     }  
  52.       
  53.     /* 删除 
  54.      * @see cn.et.emp.dao.impl.EmpDao#delete(java.lang.String) 
  55.      */  
  56.     public void delete(String eno){  
  57.         dao.delete(eno);  
  58.     }  
  59.       
  60.     /* 修改 
  61.      * @see cn.et.emp.dao.impl.EmpDao#update(en.et.emp.entity.Emp) 
  62.      */  
  63.     public void update(Emp emp){  
  64.         dao.update(emp);  
  65.     }  
  66.   
  67.     public PageEntity query(String ename) {  
  68.         // TODO Auto-generated method stub  
  69.         return null;  
  70.     }  
  71.       
  72. }  



然后还要在Main方法入口添加一个注解

 @EnableTransactionManagement
  表示全局启用事务

[java] view plain copy
  1. package cn.et.ssmboot;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.context.annotation.ImportResource;  
  6. import org.springframework.transaction.annotation.EnableTransactionManagement;  
  7.   
  8. /** 
  9.  * 自动增加spring.xml文件,并且配置自动扫描 
  10.  * 自动增加web.xml 同时在web.xml过滤器、拦截器... 
  11.  *  
  12.  * @EnableAutoConfiguration要替换成@SpringBootApplication 
  13.  * 不然扫描不到dao层,装配不了EmpDaoImpl 
  14.  * 要装配的对象必须位于HelloController类共一个包或它的子包下才可以扫描的到 
  15.  *  
  16.  * @EnableTransactionManagement 
  17.  * 表示全局启用事务 
  18.  *  
  19.  * @ImportResource(locations="classpath:/spring.xml") 
  20.  * 加载spring的配置文件,会自动加载spring里所有的bean 
  21.  * 也会自动配置 
  22.  */  
  23. @EnableTransactionManagement  
  24. @ImportResource(locations="classpath:/spring.xml")  
  25. @SpringBootApplication  
  26. public class MyStarter {  
  27.       
  28.     public static void main(String[] args) {  
  29.         //发布程序的方法入口  
  30.         SpringApplication.run(MyStarter.class, args);  
  31.     }  
  32. }  
原创粉丝点击