Spring中的事务管理



1.声明式事务:AOP(不影响原有代码)


UserMapper接口:

package com.kakafa.mapper;
import com.kakafa.pojo.User;
import java.util.List;

public interface UserMapper {

        public List selectUser();

        //添加一个用户
        public int addUser(User user);

        //通过id删除一个用户
        public int deleteUser(int id);

}

UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>





    

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

    
        delete from mybatistest.user where id=#{id};
    




UserMapperImpl:

package com.kakafa.mapper;
import com.kakafa.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;
import java.util.List;

public class UserMapperImpl implements UserMapper{

    //我们所有操作都使用sqlSession来执行,现在都使用sqlSessionTemplate,因为习惯用sqlSession,所以这里命名为sqlSession
    private SqlSessionTemplate sqlSession;

    //需要有set方法才能够在spring的bean注册中注入sqlSession的值-通过set方法注入:
    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public List selectUser() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List users = mapper.selectUser();
        return users;
    }

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

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

spring-dao.xml:注意头文件里要加入aop和tx的东西

<?xml version="1.0" encoding="UTF-8"?>



    
        
        
        
        
    

    
        
        
        
        
    


    
        
    

    
        
    

    
    
        
    

    
    
    
        
        
            
            
            
            
            
            
        
    

    
    
        
        
    





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