• Mybaits整合Spring


    整合思路

    1、SqlSessionFactory对象应该放到spring容器中作为单例存在。

    2、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。

    3、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。

    4、数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

     整合需要的jar包

    1、spring的jar包

    2、Mybatis的jar包

    3、Spring+mybatis的整合包。

    4、Mysql的数据库驱动jar包。

    5、数据库连接池的jar包。

    jar包位置如下所示:

     加入配置文件

    1. mybatisSpring的配置文件sqlmapConfig.xml

    a)        数据库连接及连接池

    <!-- 加载配置文件 -->
       <context:property-placeholder location="classpath:db.properties" />
    
        <!-- 数据库连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>

    b)        事务管理(暂时可以不配置)

    c)        sqlsessionFactory对象,配置到spring容器中

        <!-- 配置SqlSessionFactory -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 配置mybatis核心配置文件 -->
            <property name="configLocation" value="classpath:SqlMapConfig.xml" />
            <!-- 配置数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean>

    d)        mapeer代理对象或者是dao实现类配置到spring容器中。

        1.dao实现类配置到spring容器中:

      原始的DAO开发是  接口+实现类来完成。

      需要dao实现类需要继承SqlsessionDaoSupport类

      因为SqlSessionDaoSupport提供getSqlSession()方法来获取SqlSession

      例如:

    public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
        @Override
        public User queryUserById(int id) {
            // SqlSessionDaoSupport提供getSqlSession()方法来获取SqlSession
            SqlSession sqlSession = super.getSqlSession();
    
            // 使用SqlSession执行操作
            User user = sqlSession.selectOne("queryUserById", id);
    
            // 不要关闭sqlSession
    
            return user;
        }
    }

    接着把dao实现类配置到spring容器中,如下

    <!-- 原始的DAO开发,将实现类配到spring中 -->
        <bean id="userDao" class="com.xk.mybatis.dao.impl.UserDaoImpl">
         <!-- 配置sqlSessionFactory-->
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
      </bean>

    编写测试类:

    public class UserDaoTest {
        private ApplicationContext context;
    
        @Before
        public void setUp() throws Exception {
            this.context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        }
    
        @Test
        public void testQueryUserById() {
            // 获取userDao
            UserDao userDao = this.context.getBean(UserDao.class);
    
            User user = userDao.queryUserById(1);
            System.out.println(user);
        }
    }

      2.mapeer代理对象配置到spring容器中:

        (1)编写UserMapper.xml配置文件

        (2)实现UserMapper接口

        (3)在applicationContext.xml添加配置

        MapperFactoryBean也是属于mybatis-spring整合包

    <!-- Mapper代理的方式开发方式一,配置Mapper代理对象(一个mapper一个mapper的配) -->
    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!-- 配置Mapper接口 -->
        <property name="mapperInterface" value="com.xk.mybatis.mapper.UserMapper" />
        <!-- 配置sqlSessionFactory -->
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>

    或者

    <!-- Mapper代理的方式开发方式二,扫描包方式配置代理(一下扫描全部) -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 配置Mapper接口 -->
        <property name="basePackage" value="com.xk.mybatis.mapper" />
    </bean>
    <!--每个mapper代理对象的id就是类名,首字母小写 -->
  • 相关阅读:
    栈及其在.NET FrameWork中的源码分析
    《高性能网站建设指南》读书笔记
    九宫格数独问题
    队列及其在.NET FrameWork中的源码分析
    《web标准之道》读后感(书评)
    SharePoint中的权限体系
    关于异步方法调用
    WF4.0 Beta2:关于动态保存和装载XAML工作流
    Lotus Symphony介绍及试用
    Node.js 0.8.18 / 0.9.7 发布
  • 原文地址:https://www.cnblogs.com/xk920/p/9830334.html
Copyright © 2020-2023  润新知