本文主要是介绍Spring Boot配置自定义mapper.xml文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 声明Mapper接口
package com.hundsun.one.mapper;
@Repository
public interface ResultUserRoleMapper extends BaseMapper {
/**
* 分页查询
* @param page
* @return
*/
Page pageUsers(@Param("page") Page page);
}
2. 创建Mapper配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hundsun.one.mapper.ResultUserRoleMapper">
<select id="pageUsers" resultType="com.hundsun.one.model.ResultUserRole">
SELECT
u.username,u.name,u.employee_no,u.email,r.role_name,u.update_time
FROM mgr_user u
INNER JOIN mgr_user_role ur
ON u.user_id = ur.user_id
INNER JOIN mgr_role r
ON ur.role_id = r.role_id
</select>
</mapper>
3. 启动类上扫描Mapper包
@EnableSwagger2
@SpringBootApplication
@MapperScan("com.hundsun.one.mapper")
public class OneApplication {
public static void main(String[] args) {
SpringApplication.run(OneApplication.class, args);
}
}
4. 运行项目,访问接口,结果报错
// 报错原因:找不到mapper接口下的pageUsers接口方法
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hundsun.one.mapper.ResultUserRoleMapper.pageUsers
5. 排查问题
-- 检查了启动类上的注解@mapperscan,发现包扫描路径是对的
-- 检查了xml配置文件,命名空间配置的接口路径也是对的
-- 检查了方法标签的 方法id也是对的
-- 排查以上几个都没有问题,那就是xml配置文件的路径问题
-- 尝试了几种办法,将xml配置文件放到接口所在的包下,将xml文件放到resource目录下,将xml文件方法resource目录下,路径配置的跟接口所在的全限定包名路径一样
-- 都没有解决问题
-- 在网上搜索了很多方案,都没有解决
6. 在Mybatis Plus官网找到了解决方案
7. 将mapper.xml配置文件放到resource目录下,在applicaton.yml或者applicaton.yaml或者applicaton.properties文件配置路径
-- 配置mapper.xml文件
mybatis-plus.mapper-locations=classpath:*.xml
8. mapper自定义接口找不到的问题解决了,正常访问数据库
这篇关于Spring Boot配置自定义mapper.xml文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!