【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
1、整合准备
首先是构建自己的 Spring boot 项目,不做赘述,然后加上 MyBatis 的依赖,我用的是 maven 管理项目,所以依赖添加是这样的:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
接着是配置自己的数据源之类的,整合准备就基本完成了。(此段简略是因为即使不使用 MyBatis 都是必做的工作)
2、配置映射
我们会给每个 MyBatis 的xml配置文件都写一个对应的映射接口,希望让 MyBatis 框架认识到:“这个接口是一个映射接口”的方法有两个:
- 该接口上使用注解 @Mapper 即可,这样的缺点是每个接口都需要加上注解会比较麻烦,方法二会更加省事。
- 接口上不用注解,而是在配置文件(或者直接在 xxAplication 启动类)上加上注解 @MapperScan 注明 mapper 接口的路径即可,示例如下:@MapperScan("com.kfit.*.mapper") 或 @MapperScan({"com.kfit.demo","com.kfit.user"})
接着,我们写的 xml 文件需要在 mapper 标签的 namespace 属性上写上其对应的 mapper 接口的完全名称(包名+类名)
<mapper namespace="com.sbootbase.modules.permission.mapper.PermissionMapper">
这样我们就基本完成了。
3、XML文件的位置
最后一个问题是,xml文件应该放在哪里?
在 Spring boot 上整合 MyBatis 时,有两个常见的 xml 文件放置处,分别是java目录下的 mapper 接口所在、路径resource目录下的 mapper 文件夹;这两个地方各有优劣,似乎分成两派人,互相争论。
3.1、java目录下的 mapper 接口所在路径
这是 MyBatis 官方推荐的xml文件位置,mapper.xml文件放在这里并不需要额外的 MyBatis 相关的配置,也就是说只要 MyBatis 在你的配置中(上面第2点的配置)找到了 mapper 接口,那么它首先会在同一个目录下查找 mapper.xml 配置文件;
但使用 maven 管理项目的话,默认情况下 java 目录下只有 java 文件会被编译成 class 文件后与 resource 目录下合并,所以xml文件放在 java 目录下会导致打包时丢失xml文件的情况,解决方法是:在pom文件中配置maven打包时明确设置包括何种资源文件即可,示例如下:
<build>
<!-- 配置资源文件的打包路径 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources></build>
以上示例允许在 java 目录下包含 .xml 后缀的文件,你也可以根据需要详细定义更多的打包包含文件的种类等。
3.2、resource目录下的 mapper 文件夹
当你希望把xml文件放在 resource 目录下时,可以在yml文件(或properties文件)中做如下配置(具体根据自己的需求做合适的配置即可):
mybatis:
mapper-locations: classpath*:/mapper/**/*.xml或
mybatis:
mapper-locations: classpath:mapping/*Mapper.xml
3.3、xml文件的位置争论
虽然 MyBatis 官方建议将xml文件放在其映射接口所在目录下,但依然有很多人喜欢把xml文件放在 resource 下,理由是xml文件是资源文件(非 Java 文件),java目录下应该只存放Java文件,资源文件则统一放在 resource 下;但是显然 MyBatis 的xml文件里是管理SQL的文件,完全可以当作是SQL代码而不是当作资源文件看待,即使它确实不是 .java 后缀的文件。显而易见的是:mapper映射接口与mapper.xml配置文件是配合使用的,两者分离并不是最佳选择。
所以我还是觉得遵循 MyBatis 官方的建议,建议将xml文件放在其映射接口所在目录下才是最佳选择,MyBatis 也是默认到相关目录中去寻找配置文件的,我们需要做的是在pom文件中把xml文件包括进去,使得打包不会漏掉文件即可。
4、MyBatis Plus 3.x
MyBatis Plus 作为 MyBatis 的增强插件,非常好用,从3.x版本开始,尤其是目前的3.3.0版本,使得编码大大减少,基于 JDK8 的 MyBatis Plus 使得很多新特性得以运用,诸如 lambda 和 方法引用 等,不深入说明。
来源:oschina
链接:https://my.oschina.net/watsonos/blog/3147216