關於mybatis-plus配置xml映射路徑不生效的問題


一、前言

​ 今天要啟動一個新項目,准備搭建基礎結構,想來mybatis-plus是肯定要上的,springboot也是異常方便,心里想着先搞好結構然后就咔咔把一通攔截器之類直接cv就結束了,沒想到又被自己坑了,關鍵這個坑上次配項目的時候就踩過,於是這篇隨筆就這樣誕生了,下次就可以給我的豬腦子提個醒,省的再浪費時間找問題了。

二、mybatis-plus配置

​ 既然寫都寫了,那干脆就來一個完整配置記錄好了。

​ 首先在創建的項目pom文件中添加maven依賴,如下:

 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
 </dependency>
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.4.2</version>
 </dependency>

​ 然后在application配置文件填上連接mysql的配置項,大致如下:

spring.datasource.password=
spring.datasource.username=
spring.datasource.url=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

​ 在不添加額外連接池的配置時,spring直接默認使用hikariCP,內置了一套默認配置,hikari好東西,大家都懂。

​ 再然后可以在啟動添加@MapperScan並且填上掃描dao接口的包路徑,當然也可以不寫,在后面從創建的每一個dao接口都加上@Mapper效果也是一樣的,就是每個都加太麻煩,人嘛當然是能懶則懶,關鍵懶的也不失優雅就行。

​ 接下來准備一些測試dao接口,以及表和實體類:

public class TestTable {
	@TableId//主鍵名為id是可省略
    private Integer id;
    private String name;
    private Integer age;
    //省略getter,setter
}
@Mapper //配置@MapperScan后可省略
public interface TestDao extends BaseMapper<TestTable> {
	
	TestTable getTest();
}

​ 配置到這里已經可以正常使用mybatis-plus封裝好的各種基礎查詢以及QueryWrapper 功能了。

三、自定義sql,xml

​ 針對業務比較復雜的B端系統來說,上面的簡單查詢是肯定不夠用的,那么這時候是難免要使用xml格式的sql配置了,洋洋灑灑上百行一句的sql肯定是不可能用@Select注解一類的去書寫的。

<?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.example.demo.dao.TestDao">
	<select id="getTest" reslutType="com.example.demo.domain.TestTable">
    	<!-- 此處省略sql -->
    </select>
</mapper>

​ 按照常規書寫xml就行行了,最關鍵的配置是下面一項:

#具體路徑是項目實際路徑確定,下面展示的是starer包默認配置
mybatis-plus.mapper-locations=classpath*:/mapper/*/*.xml

最坑的地方來了:在idea中創建resources下面的文件夾時,千萬不能“偷懶”,像創建類一樣用xx.xx.xx的方式快速創建包結構。

image-20220307232821299

​ 就這樣一個結構,如果你直接mybatis.mapper建立的文件夾,那你完了。這跟先創建mybatis,再創建mapper用肉眼凡胎是指定看不出什么區別了。

​ 但是“幸運”的是,項目啟動以后,在你調用sql的時候,系統會親切的用一個Invalid bound statement (not found) 問候你。

​ 呵呵,接下來就是我下午的百思不得其解了,當然下午有點頭疼狀態不佳,到了晚上突然就頓悟了想起來上次搭建項目就是這么被玩的。

​ 就這樣把,哎,希望能幫到有緣人~~(其實是提醒自己下次別再呵呵。。。)


免責聲明!

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



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