首页 > 编程语言 > 详细

Spring_21_整合Mybatis - Mybatis-Spring

时间:2021-05-12 20:59:24      阅读:33      评论:0      收藏:0      [点我收藏+]

Mybatis整合 - Mybatis-Spring

   * MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 
     的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

 
   * 版本匹配问题
      
            | MyBatis-Spring | MyBatis | Spring Framework | Spring Batch | Java    |

            | -------------- | ------- | ---------------- | ------------ | ------- |

            | 2.0            | 3.5+    | 5.0+             | 4.0+         | Java 8+ |

            | 1.3            | 3.4+    | 3.2.2+           | 2.1+         | Java 6+ |



  * Spring 整合 Mybatis步骤

     - 第一步:  在applicactionContext.xml文件中编写数据源配置,使用Spring数据源。
 
                  <!--DataSource  使用Spring数据源替换Mybatis的配置  还可以使用 c3p3 dbcp druid-->
                    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
                        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai"/>
                        <property name="username" value="root"/>
                        <property name="password" value="123456"/>
                    </bean>


     - 第二步:  在applicactionContext.xml文件中编写SqlSessionFactory

                  <!--SqlSessionFactory-->
                  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                      <property name="dataSource" ref="dataSource" />
                      <!-- 绑定Mybatis核心配置文件 -->
                      <property name="configLocation" value="classpath:Mybatis-config.xml"/>
                      <!--注册映射文件-->
                      <property name="mapperLocations" value="classpath:com/shi/mapper/*.xml"/>
                  </bean>


     - 第三步:在applicactionContext.xml文件中编写SqlSessionTemplate(就是SqlSession,只不过在Spring中名字不同)

              <!--SqlSession-->
              <bean id="sqlSession"  class="org.mybatis.spring.SqlSessionTemplate">
                  <!--只能使用构造器注入, 因为没有Set方法-->
                  <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
              </bean>
                        

     - 第四步: 给接口加实现类,之前在测试类中做的事情,现在在实现类中写。
    
            public class UserMapperImpl implements UserMapper{

                //定义一个SqlSessionTemplate
                private SqlSessionTemplate sqlSession;

               //给Spring提供一个set注入方法
                public void setSqlSession(SqlSessionTemplate sqlSession) {
                    this.sqlSession = sqlSession;
                }

              // 实现接口中的方法, 测试类直接调用该方法就可以了
                public List<User> queryUser() {
                   UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
                   List<User> userList=userMapper.queryUser();
                   return  userList;
                }


      - 第五步: 将字自己写的实现类,注入到Spring中

                <!--注入实现类 传入sqlSession-->
                <bean name="queryUser" class="com.shi.mapper.UserMapperImpl">
                    <property name="sqlSession" ref="sqlSession"/>
                </bean>
                          


      - 第六步: 测试使用即可 

               public class MyTest {
                  @Test
                  public void testQueryUser() throws IOException {
                      //注册配置文件
                      ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

                      //获取对象
                      UserMapper userMapper=context.getBean("queryUser",UserMapper.class);

                      //执行方法
                      List<User> userList=userMapper.queryUser();

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

  
  * 可以将applicationContext.xml文件中的配置数据源分离出来,单独写一个数据源配置文件,这样更加清晰,然后在applicationContext.xml中引入该子文件即可。
        <!--引入数据库配置文件-->
        <import resource="Spring-dao"/>




 * 整体配置文件代码:

                 <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:aop="http://www.springframework.org/schema/aop"
               xsi:schemaLocation="http://www.springframework.org/schema/beans
                https://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/aop
                https://www.springframework.org/schema/aop/spring-aop.xsd">

            <!--引入数据库配置文件-->
            <import resource="Spring-dao"/>
            
             <!--DataSource  使用Spring数据源替换Mybatis的配置  还可以使用 c3p3 dbcp druid  这里可以分出去-->
            <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </bean>


            <!--SqlSessionFactory-->
            <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                <property name="dataSource" ref="dataSource" />
                <!-- 绑定Mybatis核心配置文件 -->
                <property name="configLocation" value="classpath:Mybatis-config.xml"/>
                <!--注册映射文件-->
                <property name="mapperLocations" value="classpath:com/shi/mapper/*.xml"/>
            </bean>


            <!--SqlSession-->
            <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
                <!--只能使用构造器注入, 因为没有Set方法-->
                <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
            </bean>


            <!--注入实现类 传入sqlSession-->
            <bean name="queryUser" class="com.shi.mapper.UserMapperImpl">
                <property name="sqlSession" ref="sqlSession"/>
            </bean>


        </beans>

Spring_21_整合Mybatis - Mybatis-Spring

原文:https://www.cnblogs.com/szqengr/p/14760018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!