本文主要介绍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配置文件。
jdbc连接参数文件中对MySql连接相关参数进行如下配置:③对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语句)
**注:**若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连接参数的相关配置;③在resources目录下创建文件夹命名为mapper,用于Mapper映射文件的存放,防止编译时无法编译xml文件,将xml文件放在resources目录下就可以正常被加载到而不需要在pom文件中进行额外配置; ④、在resources目录下创建config目录,将mybatis配置文件放在config目录中;⑤、在yaml文件中配置Mybatis配置文件和Mapper文件所在位置;到这里就基本配置完成了可以使用了;
3、基于注解的Mybatis
使用注解可以很方便的完成以上需要大量配置完成的事情。
①、导入相关依赖(参上)
②、进行连接参数配置(参照方式二)
③、进行mybatis配置,直接在yaml文件中进行mybatis的配置,不用再额外创建mybatis配置文件;④、数据访问层接口,需要指定这个接口是一个Mapper所以加上注解,然后在方法上使用相应注解(@Select、@Insert、@Delete、@Update),在注解中写相应SQL语句;注意:SQL语句连接的空格,如果要写动态SQL语句那么需要在SQL语句的前后分别加上标签然后将动态SQL放入标签中,最后一起放入注解中。