Spring整合Mybatis添加事务学习笔记

目录

1、程序目录结构

2、导入需要用的依赖包

3、编写实体类User

4、编写接口UserMapper

5、编写UserMapper.xml,做增删改操作

6、配置Mybatis-config.xml

7-1、配置spring-dao.xml(没有添加事务)

7-2、配置spring-dao.xml(添加事务,配置了申明式事务)

8、编写接口实现类UserMapperImpl

9、测试类

10、结果

        10.1、7-1没有配置事务的运行结果

        10.2、7-2添加了申明式事务的运行结果

1、程序目录结构

Spring整合Mybatis添加事务学习笔记_第1张图片 

2、导入需要用的依赖包

Spring整合Mybatis添加事务学习笔记_第2张图片

3、编写实体类User

package com.zhou.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}

4、编写接口UserMapper

package com.zhou.mapper;

import com.zhou.pojo.User;

import java.util.List;

public interface UserMapper {
    public List selectUser();

    public int addUser(User user);

    public int deleteUser(int id);
}

5、编写UserMapper.xml,做增删改操作

(这边的delete单词错误写成deletes,制造错误,用于测试事务)




    

    
        insert into mybatis.user (id, `name`, pwd) values (#{id}, #{name}, #{pwd});
    

    
        deletes
        from mybatis.user
        where id = #{id};
    

6、配置Mybatis-config.xml






    
        
    


7-1、配置spring-dao.xml(没有添加事务)





    
        
        
        
        
    


    
        

        
        
    


    

        
    

7-2、配置spring-dao.xml(添加事务,配置了申明式事务)





    
        
        
        
        
    


    
        

        
        
    


    

        
    



    
        
    



    


        
            
            
            
            
            
        
    


    
        
        
    


8、编写接口实现类UserMapperImpl

(这边查询方法内加了增加用户和删除用户方法,删除用户的数据库操作语言有错误)

package com.zhou.mapper;

import com.zhou.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import java.util.List;

public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper{

    // 我们的所有操作,在原来都是用sqlSession来执行,现在都使用sqlSessionTemplate
    @Override
    public List selectUser() {
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);

        User user = new User(6, "小王", "123123");

        mapper.addUser(user);
        mapper.deleteUser(6);

        return mapper.selectUser();
    }

    @Override
    public int addUser(User user) {
        return getSqlSession().getMapper(UserMapper.class).addUser(user);
    }

    @Override
    public int deleteUser(int id) {
        return getSqlSession().getMapper(UserMapper.class).deleteUser(id);
    }
}

9、测试类

import com.zhou.mapper.UserMapper;
import com.zhou.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapperImpl = context.getBean("userMapperImpl", UserMapper.class);
        List userList = userMapperImpl.selectUser();

        for (User user : userList) {
            System.out.println(user);
        }
    }
}

10、结果

        10.1、7-1没有配置事务的运行结果

在实现类中,添加操作是第一个之后是删除操作最后是查询。没有添加事务,执行查询这个方法,由于删除操作错误,方法运行报错,但是由于没有事务,添加操作仍然执行了,并且添加到了数据库中

Spring整合Mybatis添加事务学习笔记_第3张图片

        10.2、7-2添加了申明式事务的运行结果

程序运行依然是报错,但是由于添加了事务,所以添加用户这个操作就没有执行,数据库中也没有增加用户。这样保证了数据的完整性和一致性。保证事务的ACID原则。 

Spring整合Mybatis添加事务学习笔记_第4张图片

你可能感兴趣的:(mybatis,spring,学习)