Spring整合Mybatis

一. 引入Spring等相关依赖

 <dependencies>
       <!--版本建议换成提示的更安全的版本-->
        <!-- mybatis插件 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--mysql相关依赖  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <!--单元测试依赖  -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <!--lombok插件-->
        <!--写实体类时方便生成相关的get/set/构造器等方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.18</version>
        </dependency>
        <!-- PageHelper 分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.3.3</version>
        </dependency>
     
      <!--新增加的依赖 -->
     <!-- spring -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>5.3.28</version>
     </dependency>
     <!-- Spring集合mybatis-->
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis-spring</artifactId>
         <version>2.1.1</version>
     </dependency>
     <!--spring-jdbc-->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
         <version>5.3.28</version>
     </dependency>
     <!--数据库连接池-->
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.2.18</version>
     </dependency>
    </dependencies>

二. 编写Spring.xml

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

    <!-- 要配置SqlSessionFactory工厂 bean-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 引入数据源,这里用的是德鲁伊连接池,你也可以选择其他的-->
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="扫描你的mapper.xml文件(mappers/*.xml)"/>
       
        <!--加载你的mybatis-config.xml配置文件-->
       <!-- <property name="configLocation" value="mybatis-config.xml"/>  -->
        
        <!-- 注意:configLocation和configuration只能选择其中一个配置,
                 建议使用后者,现在直接可以把mybatis-config.xml删掉了-->
        <property name="configuration">
            <bean class="org.apache.ibatis.session.Configuration">
                <!-- 配置mybatis驼峰命名映射-->
                <property name="mapUnderscoreToCamelCase" value="true"/>
                 <!-- 配置mybatis日志-->
                <property name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
            </bean>
        </property>
        
        <!-- 配置插件-->
          <property name="plugins">
            <array>
                 <!-- 分页插件-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
    <!-- 设置为true时,当页码小于等于0显示第一页,大于最大页码时显示最后一页;默认为false-->
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

    <!-- 配置druid数据源  对应上面sqlSessionFactory的dataSource属性-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/数据库"/>
        <property name="username" value="用户名"/>
        <property name="password" value="密码"/>
     </bean>

      <!-- 为单个Mapper接口配置,通过MapperFactoryBean
            能够产生类似Mapper接口的实现类对象,从而能够调用接口中的方法 --> 
  <!--  <bean id="buildingMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
           声明要传入的接口,相当于原材料
        <property name="mapperInterface" value="com.wsl.wy.mapper.BuildingMapper" />
            配置sqlSessionFactory
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>-->
    
      <!-- 单个配置过于繁琐,采用下面的方式可以直接扫描mapper接口所在的包,全部配置-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wsl.wy.mapper" />
    </bean>

    <!-- 对普通类进行属性注入例子,将其对象交给spring,我们直接从容器中获取,而不采用new的方式-->
    <bean id="buildingService" class="com.wsl.wy.service.impl.BuildingServiceImpl">
         <!-- ref值的解释:当上一层调用下一层的方法时,一般会创建下一层的实现类对象从而调用方法,
         然我们现在不再用new的方式了,而是把他当作自己的属性进行配置,而值也是从容器中拿。因为上面我们配置
         了直接扫描mapper接口所在的包;spring为每个mapper接口配置bean,且默认id为 接口名首字母小写,因此
 		 这里的ref="buildingMapper"
           -->
        <property name="buildingMapper" ref="buildingMapper"/>
    </bean>

</beans>

三. 测试代码

  @Test
    public void testAdd() {
        
        //从容器中获取BuildingServiceImpl对象
        BuildingService service =
                new ClassPathXmlApplicationContext("spring.xml").
                        getBean("buildingService", BuildingService.class);
        Building building1 = new Building();
        building1.setHouseNumber(5);
        //我们就可以调用BuildingService实现类里的方法了
        service.addABuilding(building1);

    }
posted @ 2023-07-17 20:04  wshuanglin  阅读(31)  评论(0)    收藏  举报