04Spring整合MyBatis、声明式事务

04Spring整合MyBatis、声明式事务,第1张

04Spring整合MyBatis、声明式事务 pom.xml
    
        
        
            junit
            junit
            4.12
        
        
        
            org.mybatis
            mybatis
            3.5.7
        
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            org.springframework
            spring-webmvc
            5.3.13
        
        
            org.springframework
            spring-jdbc
            5.3.12
        
        
        
        
            org.aspectj
            aspectjweaver
            1.9.7
        
        
        
            org.mybatis
            mybatis-spring
            2.0.6
        
        
        
            org.projectlombok
            lombok
            1.18.20
        
    

    
    
        
            
                src/main/resources
                
                    ***.xml
                    ***.properties
                    **/*.xml
                
                true
            
        
    
文件目录

 UserMapper
public interface UserMapper {

    List getUserList();
}
 UserMapper.xml
 



    
        select * from user;
    
 UserMapperImpl  【工具类】
 public class UserMapperImpl implements UserMapper {

    //我们的所有 *** 作,都使用sqLSession来执行,在原来,现在都使用sqLSessionTemplate;
    private SqlSessionTemplate sqlSessionTemplate;

    public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        this.sqlSessionTemplate = sqlSessionTemplate;
    }

    @Override
    public List getUserList() {
        UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
        List userList = mapper.getUserList();
        return  userList;
    }
}
User
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User1 {

    private int id;
    private String name;
    private String pwd;
}

applicationContext.xml


    
    
    
    
        
    
    
db.properties 【工具类】
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&serverTimezone=UTC&characterEncoding=utf8
username=root
password=123456
spring-dao.xml  【建议在里面写set 和 typeAliases 】
 



    

    
        
        
        
        
        
        
    

    
    
        
         
    

mybatis-config.xml  【工具类】  【以加事务】


    
    
        
        
        
        
    
    
    
        
        
        
        
    


    
    
        
    


    
    
    
        
        
        
            
            
            
            

        
    

    
    
        
        
    
测试1
    @Test
    public void test2(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean("userMapper", UserMapper.class);

        for (User1 user1 : userMapper.getUserList()) {
            System.out.println(user1);
        }
    }


方式二 UserMapperImpl2 
public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
    @Override
    public List select() {
        //SqlSession sqlSession = getSqlSession();
        //UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        //最精简版
        return getSqlSession().getMapper(UserMapper.class).getUserList();
        //getUserList()自己的 dao 方法
    }
}
此时  spring-dao.xml中


    
    
    
        
        
        
        
    

    
    
        
        
        
        
    

    
    
    
    
        
        
    

applicationContext.xml



    

    
        
    

    
        
    
    
测试
    @Test
    public void test3(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean("userMapper2", UserMapper.class);

        for (User1 user1 : userMapper.getUserList()) {
            System.out.println(user1);
        }
    }
Spring中的事务管理

要么都成功,要么都失败

十分重要,涉及到数据一致性

确保完整性和一致性

事务的ACID原则:

原子性

一致性

隔离性

多个业务可能 *** 作一个资源,防止数据损坏

持久性

事务一旦提交,无论系统发生什么问题,结果都不会被影响。

Spring中的事务管理

编程式事务管理  需要在代码中,进行事务的管理

将事务管理代码嵌到业务方法中来控制事务的提交和回滚

缺点:必须在每个事务 *** 作业务逻辑中包含额外的事务管理代码

声明式事务管理    AOP 横切 不影响原来的代码

一般情况下比编程式事务好用。

将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。

将事务管理作为横切关注点,通过aop方法模块化。Spring中通过Spring AOP框架支持声明式事务管理。

使用Spring管理事务,注意头文件的约束导入 : tx

xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
配置好事务管理器后我们需要去配置事务的通知  和  配置AOP
    
    
        
    

    
    
    
        
        
        
            
            
            
        
    

    
    
        
        
    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存