美文网首页
Spring整合MyBaits的相关知识

Spring整合MyBaits的相关知识

作者: 劝君莫听雨 | 来源:发表于2020-08-28 09:23 被阅读0次

    Spring整合myBaits思路

    SqlSessionFactory -> SqlSession -> Mapper -> CRUD
    由此可以发现,MyBaits最终是通过SqlSessionFactory来操作数据库,Spring整合MyBaits就是将SqlSessionFactory交给Spring;所以在applicationContext.xml配置文件中配置数据源dataSource,创建MyBaits的核心类对象sqlSessionFactory,产生最终操作需要的动态Mapper对象。

    整合步骤

    • 1.需要准备的jar包

      commons-dbcp-1.4.jar
      commons-logging-1.1.1.jar
      commons-pool-1.6.jar
      log4j.jar
      mybatis-3.4.4.jar
      mybatis-spring-1.3.1.jar
      mysql-connector-java-5.1.29.jar(mySQL连接驱动包)
      spring-aop-4.3.9.RELEASE.jar
      spring-beans-4.3.9.RELEASE.jar
      spring-context-4.3.9.RELEASE.jar
      spring-context-support-4.3.9.RELEASE.jar
      spring-core-4.3.9.RELEASE.jar
      spring-expression-4.3.9.RELEASE.jar
      spring-jdbc-4.3.9.RELEASE.jar
      spring-tx-4.3.9.RELEASE.jar
      spring-web-4.3.9.RELEASE.jar

    • 2.创建类,创建表

      Dao类,数据库表

    • 3.通过Mapper.xml将类与表建立映射关系**

    <mapper namespace="org.motinyu.dao.StudentDao">
        <select id="queryStudentByStuno" parameterType="int" resultType="org.motinyu.entity.Student">
            select * from student where stuNO = #{stuNO} 
        </select>
        <insert id="addStudent" parameterType="org.motinyu.entity.Student" >
            insert into student(stuNo,stuName,stuAge) value(#{stuNo},#{stuName},#{stuAge})
        </insert>
    </mapper>
    
    • 4.在配置文件中配置数据源,创建sqlSessionFactory对象**

      ① 编写db_properties文件

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/db_spring_project?useUnicode=true&characterEncoding=utf-8
    username=root
    password=
    maxActive=10
    maxIdle=6
    
    • ② 配置文件中加载db_properties文件

    <!-- 加载db_properties文件 -->
        <bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
            <property name="locations"> 
                <array>
                    <value>classpath:db.properties </value>
                </array>
            </property>
        </bean>
    
    
    • ③ 配置文件中配置数据源

    <!-- 配置数据库信息(代替Mybaits的配置文件:conf.xml) -->
         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close"      >
            <property name="driverClassName" value="${driver}"></property>
            <property name="url" value="${url}"></property>
            <property name="username" value="${username}"></property>
            <property name="password" value="${password}"></property>
         </bean>
    
    • ④ 配置文件中创建myBaits核心类对象sqlSessionFactory

    <!-- 在Spring IOC容器中创建MyBaits的核心类 sqlSessionFactory -->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
           <property name="dataSource" ref="dataSource"></property>
           <!-- 加载Mybaits配置文件 conf.xml 
           <property name="configLocation" value="classpath:mybatis-config.xml"></property>
           -->
           <!-- 加载mapper.xml路径 -->
           <property name="mapperLocations" value="org/motinyu/dao/*.xml"></property>
       </bean>
    
    • 5.Spring产生动态Mapper对象的三种方式

    • ① Dao层实现类继承sqlSessionDaoSupport类

    public class StudentDaoImpl extends SqlSessionDaoSupport implements StudentDao{
    
        @Override
        public void addStudent(Student student) {
            SqlSession sqlSession = super.getSqlSession();
            StudentDao mapper = sqlSession.getMapper(StudentDao.class);
            mapper.addStudent(student); 
        }
    }
    
    
    <!-- 第一种方式生成Mapper代理对象 -->
        <bean id="studentDao" class="org.motinyu.dao.impl.StudentDaoImpl">
            将Spring配置的sqlSessionFactory对象交给Dao
            <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        </bean>
    
    • ② 不实现SqlSessionDaoSupport类,直接使用MyBaits的Mapper实现类

      缺点:每个Mapper都需要配置一次

    <!--第二种方式生成Mapper代理对象   -->
        <bean id="studentDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
            <property name="mapperInterface" value="org.motinyu.dao.StudentDao"></property>
            <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        </bean>
    
    
    • ③ 批量配置实现类(使用的最多)

    <!--  第三种方式生成Mapper代理对象 
              批量产生Mapper对象在Spring容器中的id值,默认就是接口名(首字母小写)
         --> 
        <bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
            <!--指定批量生产那个包中的mapper对象  -->
            <property name="basePackage" value="org.motinyu.dao"></property>
        </bean>
    
    

    相关文章

      网友评论

          本文标题:Spring整合MyBaits的相关知识

          本文链接:https://www.haomeiwen.com/subject/xnhxsktx.html