本文主要介绍Spring与MyBatis整合的几种方式。使用MySql数据库,Maven进行项目管理,导入Sprig相关的核心依赖(core、context、bean)。

1、基于xml的方式

①首先在pom文件中导入相关依赖,需要导入的依赖有mybatis依赖、spring-jdbc依赖、MySql驱动和mybatis-spring相关依赖。

<!-- mybatis依赖 -->
 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.5.1</version>
 </dependency>
<!-- MySQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
  <version>8.0.15</version>
  </dependency>
  <!-- mybatis-spring 依赖  -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
  <version>2.0.1</version>
  </dependency>

②在resource目录下创建jdbc连接参数文件和MyBatista配置文件,以及spring配置文件。

spring mybatis 架构图 spring管理mybatis_mybatis

jdbc连接参数文件中对MySql连接相关参数进行如下配置:

spring mybatis 架构图 spring管理mybatis_mysql_02

③对MyBatista进行相关配置。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- MyBatis框架运行规则配置 -->
    <settings>
        <!-- 开启日志 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!-- 开启二级缓存(整体开启) -->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!-- 设置别名(为实体类设置别名) -->
    <typeAliases>
        <!-- 为每一个实体设置别名 -->
        <!-- 设置实体类包,为该package中的每个实体类自动设置别名 -->
        <package name="com.apesource.entity"/>
    </typeAliases>

    <!-- 映射器列表 -->
    <mappers>
        <!-- SQL映射文件包 -->
        <package name="com.apesource.dao.mapper"/>
    </mappers>
</configuration>

④spring配置文件的相关配置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 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
                    http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">

<!--加载properties配置文件-->
<context:property-placeholder location="jdbc.properties"/>

<!--数据源-->
<bean name="dataSourceBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <!--注入数据库连接相关参数-->
  <property name="driverClassName" value="${driver_class}"/>
  <property name="url" value="${jdbc_url}"/>
  <property name="username" value="${db_username}"/>
  <property name="password" value="${db_password}"/>
</bean>

<!--sqlSessionFactory-->
<bean name="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!--注入数据源-->
  <property name="dataSource" ref="dataSourceBean"/>
  <!--方式一:
  注入实体类所在的包
  <property name="typeAliasesPackage" value="com.apesource.entity"/>
  注入Mapper映射文件所在位置
  <property name="mapperLocations" value="classpath*:com/apesource/dao/mapper/UserMapper.xml"/>
  -->
  <!--方式二:加载mybatis配置文件-->
  <property name="configLocation" value="mybatis-config.xml"/>
</bean>

<!-- Mapper扫描器:扫描当前项目中的所有Mapper并创建动态代理 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <!-- 注入当前容器中的SqlSessionFactory的名称 -->
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
  <!--Mapper接口所在包的路径-->
   <property name="basePackage" value="com.apesource.dao.mapper"/>
</bean>
<!-- 扫描当前包中的组件 -->
<context:component-scan base-package="com.apesource"/>
</beans>

⑤、创建dao层进行数据访问层接口和映射文件书写(接口中写方法,xml文件中配置方法对应SQL语句)

spring mybatis 架构图 spring管理mybatis_mybatis_03

**注:**若xml映射文件无法被成功编译到target目录的编译文件中,可以在pom配置文件中加入如下配置

<resources> <!-- 解决MyBatis配置文件build时没有输出至target目录 --> <resource> <directory>src/main/java</directory> <includes> <!-- 加载目录中的xml文件 --> <include>**/*.xml</include> <!-- 加载目录中的properties文件 <include>**/*.properties</include>--> </includes> <filtering>true</filtering> </resource> </resources>

2、Spring Boot项目基于xml

①、导入相关依赖,不论是那种方式依赖的导入是必不可少的;

②、在yaml文件中进行MyBatis连接参数的相关配置;

spring mybatis 架构图 spring管理mybatis_spring mybatis 架构图_04

③在resources目录下创建文件夹命名为mapper,用于Mapper映射文件的存放,防止编译时无法编译xml文件,将xml文件放在resources目录下就可以正常被加载到而不需要在pom文件中进行额外配置; ④、在resources目录下创建config目录,将mybatis配置文件放在config目录中;

spring mybatis 架构图 spring管理mybatis_spring_05

⑤、在yaml文件中配置Mybatis配置文件和Mapper文件所在位置;

spring mybatis 架构图 spring管理mybatis_mybatis_06

到这里就基本配置完成了可以使用了;

3、基于注解的Mybatis

使用注解可以很方便的完成以上需要大量配置完成的事情。

①、导入相关依赖(参上)

②、进行连接参数配置(参照方式二)

③、进行mybatis配置,直接在yaml文件中进行mybatis的配置,不用再额外创建mybatis配置文件;

spring mybatis 架构图 spring管理mybatis_java_07

④、数据访问层接口,需要指定这个接口是一个Mapper所以加上注解,然后在方法上使用相应注解(@Select、@Insert、@Delete、@Update),在注解中写相应SQL语句;

spring mybatis 架构图 spring管理mybatis_spring_08

注意:SQL语句连接的空格,如果要写动态SQL语句那么需要在SQL语句的前后分别加上标签然后将动态SQL放入标签中,最后一起放入注解中。

spring mybatis 架构图 spring管理mybatis_spring_09