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自定義接口找不到的問題解決了,正常訪問數據庫