Mybatis配置资源拷贝插件
如果Mybatis的映射配置文件放到了src/main/java/的目录下,会出现一个问题:项目打包时默认只会把resources目录下的配置文件打进jar包,所以java目录下的映射配置文件就没了。
解决方法 我们要让idea把resources和java目录下的配置文件都打进jar包。此时我们需要在pom文件的build下配置资源拷贝插件。
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
一旦这么配置之后,java目录下(包括下面的子包)所有配置文件都会打进jar包,但是此时resources目录下的配置文件就不放进jar包了,所以我们还有配置resources目录下的配置文件!!!
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.property</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
修改启动类添加@MapperScan注解
由于我们现在的Mapper接口和映射配置文件都放在java目录下的Mapper包,所以我们要在启动类上要告诉springboot启动类去哪里找接口和映射配置文件。
@MapperScan("com.bjsxt.springbootmybatis.mapper")
//指定扫描接口与映射配置文件的位置
Mybatis的其他配置项
如果映射配置文件并没有放在java文件夹的Mapper包下而是放到了resources目录,此时MapperScan只能扫描到接口扫描不到映射配置文件
解决方法 在application.yml中写
mybatis:
mapper-location: classpath:/mapper/*.xml
还有一个配置项是通过包给实体起别名,这个配置项针对于映射配置文件中写返回值类型。如果配置了这个配置项就不需要写全包名直接写pojo类型名称就行。
mybatis:
mapper-location: classpath:/mapper/*.xml
type-aliases-package: com.bjsxt.springbootmybatis.pojo