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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM