zoukankan      html  css  js  c++  java
  • 四、spring整合mybatis及声明式事务管理(17~22)

    整合mybatis(注意!!!!:一下内容4之前的,在<aop:config>里的<aop:pointcut>中的id为pointcut而不是point,免得测试不通过

    1、步骤:

      a) 导入相关jar包

      b) 编写配置文件

    spring的配置文件beans.xml

    mybatis的配置文件mybatis.cfg.xml

     c) 实现

      Dao接口及实现

    public interface UserDao {
        public List<User> selectUser();
    }

    /**
    * 以前需要一个SqlSession,现在既然要整合,创建对象的过程都不用自己去创建了
    * 所以现在的SqlSessionTemplate(对SqlSession的一种封装)
    *
    *
    */
    public class UserDaoImpl implements UserDao {
         private SqlSessionTemplate sqlSession;


         public void setSqlSession(SqlSessionTemplate sqlSession) {
              this.sqlSession = sqlSession;
         }
         @Override
         public List<User> selectUser() {
              return sqlSession.selectList("cn.sxt.vo.user.mapper.selectAll");
         }
    }

    cn.sxt.test.Test

     2、声明式事务管理(重点)

    事务的传播特性

    spring支持两种事务,一种声明式事务,一种编程式事务(自己在代码中自己去管理事务)

     3、第二种方式:使用mybatis-spring1.2.3整合(拷贝12做改进)

    在spring配置文件中,不需要管理sqlSessionTemplate,在Dao的实现中需要继承SqlSessionDaoSupport

    Dao实现

    /**
     * 以前需要一个SqlSession,现在既然要整合,创建对象的过程都不用自己去创建了
     * 所以现在的SqlSessionTemplate(对SqlSession的一种封装)以前的,不管
     * 
     *这种继承SqlSessionDaoSupport的方式是新版本的功能,这样beans.xml里面少了一个注入了,更加的简单
     *但是这个要换掉mybatis-spring1.2.1的jar包改为mybatis-spring1.2.3的jar包才有这样的功能
     */
    public class UserDaoImpl extends SqlSessionDaoSupport重点 implements UserDao {
        //private SqlSessionTemplate sqlSession;        现在这里代码不要了
        @Override
        public List<User> selectUser() {    //这个操作应该在service层,这里暂时没写
            return getSqlSession().selectList("cn.sxt.vo.user.mapper.selectAll");
        }
    }

    补充:源码中SqlSessionDaoSupport与SqlSessionTemplate  implements SqlSession 三者的关系

     4、第三种方式:spring整合mybatis(拷贝13做改进)

    mybatis使用注解,整个项目目录结构是这样的

    UserMapper

    public interface UserMapper {
        @Select("select * from user")
        public List<User> selectUser();
    }

    UserServiceImpl

    public class UserServiceImpl implements UserService {
        private UserMapper userMapper = null;
        
        public void setUserMapper(UserMapper userMapper) {
            this.userMapper = userMapper;
        }
        @Override
        public List<User> selectUser() {
            // TODO Auto-generated method stub
            return userMapper.selectUser();
        }
    }

    spring配置文件beans.xml

    配置文件关键点id=userMapper   userService 部分

    测试类

    5、第四种方式:整合spring和mybatis(拷贝12做改进)------不要mybatis配置文件

     把<aop:config>的子标签<aop:pointcut>里面的id属性改为pointcut

    将所有的配置信息配置到spring的配置文件

    改变1

    改变2:删除了mybatis.cfg.xml,所以也就没有了别名,所以每个实体的mapper.xml返回   resutlType为  全类名   无别名

    改变3:由于里面有事务,所以为了测试正常把UserDao实现类里的selectUser()方法中间删除(之前遗留做声明式事务测试的)只有返回值      测试不变,值为0,因为数据库已被清空,一条记录也没有

  • 相关阅读:
    python学习笔记(一)--之list与tuple
    centos 安装redis3.0为解决数据库频繁插入数据IO性能问题
    Win32汇编木马初探
    Knockout自定义绑定my97datepicker
    iTextSharp给PDF添加水印
    技术资料整理
    css模拟阴影和小三角
    统计一个部门有多少人
    js登录界面带提示
    程序员给女朋友用HTML5制作的3D相册 (www.webhek.com)<转摘>
  • 原文地址:https://www.cnblogs.com/djlindex/p/11361036.html
Copyright © 2011-2022 走看看