MyBatis-Plus自定義SQL的詳細(xì)過程記錄
前言
當(dāng)我們?cè)陂_發(fā)過程中,如果MyBatis-Plus中的SQL語(yǔ)句并不能滿足我們的需求,那么我們可以在XML文件中自定義SQL語(yǔ)句,這樣的話我們就可以在MyBatis-Plus的基礎(chǔ)上繼續(xù)提高我們的開發(fā)效率了。本篇博客也將講解如何在src/main/resource目錄下和src/main/java目錄下對(duì)XML的配置。
一、在src/main/resource目錄下編寫XML
1.1 目錄結(jié)構(gòu)
我們將UserMapper.xml放在resource下的mapper目錄中,我的整個(gè)項(xiàng)目目錄如下

1.2 編寫實(shí)體類對(duì)應(yīng)的Mapper接口
Tip:我們這里自定義了getAll()方法,獲取全部用戶的信息。
package com.yixin.mapper;
import com.yixin.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yixin
* @since 2022-01-17
*/
@Repository
public interface UserMapper extends BaseMapper<User> {
public List<User> getAll();
}1.3 編寫UserMapper.xml
<?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.yixin.mapper.UserMapper">
<select id="getAll" resultType="com.yixin.pojo.User">
select * from user
</select>
</mapper>1.4 在配置文件中掃描我們的xml配置的位置。
application.properties:
mybatis-plus.mapper-locations=classpath:/mapper/**.xml
1.5 測(cè)試
import org.springframework.boot.test.context.SpringBootTest;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest
class AutoApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void test() {
List<User> userList=userMapper.getAll();
System.out.println(userList);
}
}結(jié)果:
可以發(fā)現(xiàn),成功出現(xiàn)我們的信息了!

二、在src/main/java目錄下編寫XML
2.1 目錄結(jié)構(gòu)
TIp:在java下的mapeer目錄中建立存放我們的xml配置的目錄xml包

2.2 編寫實(shí)體類對(duì)應(yīng)的Mapper接口
package com.yixin.mapper;
import com.yixin.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yixin
* @since 2022-01-17
*/
@Repository
public interface UserMapper extends BaseMapper<User> {
public List<User> getAll();
}2.3 編寫UserMapper.xml
<?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.yixin.mapper.UserMapper">
<select id="getAll" resultType="com.yixin.pojo.User">
select * from user
</select>
</mapper>2.4 編寫配置文件
application.properties:
mybatis-plus.mapper-locations=classpath:com/yixin/mapper/xml/UserMapper.xml
2.5 ?? 配置pom.xml(重要)??
這一步非常重要,因?yàn)?strong>如果沒有配置pom.xml就去運(yùn)行,那么會(huì)出現(xiàn)以下的錯(cuò)誤。

為什么呢?
這是因?yàn)樵趍aven默認(rèn)情況下是不會(huì)將src/main/java目錄的xml等資源打包進(jìn)入class文件夾的,而是直接忽略掉。不信的話我們?nèi)タ匆幌聇arget目錄。
可以發(fā)現(xiàn)這里并沒有將我們的xml文件打包進(jìn)去。

解決方案:配置pom.xml
我們只需在pom中加入如下配置,告訴idea,在編譯的時(shí)候?qū)?strong>src/main/java下的xml一起打包進(jìn)class文件夾中,這樣也就不會(huì)報(bào)異常了。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>2.6 測(cè)試
import org.springframework.boot.test.context.SpringBootTest;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest
class AutoApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void test() {
List<User> userList=userMapper.getAll();
System.out.println(userList);
}
}結(jié)果:
可以發(fā)現(xiàn)成功出現(xiàn)我們的數(shù)據(jù)庫(kù)信息了!

我們?cè)偃ゲ榭匆韵?strong>target目錄:

可以發(fā)現(xiàn),已經(jīng)把我們的xml配置導(dǎo)進(jìn)來(lái)了,如果發(fā)現(xiàn)還是沒有的話,建議把target目錄刪除,然后重新運(yùn)行,就可以重新生成target目錄了,這時(shí)候就能發(fā)現(xiàn)你的xml文件了。
三、classpath和classpath*的區(qū)別
classpath:只會(huì)在你的class路徑下尋找
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找
一般來(lái)說,在大型公司的項(xiàng)目開發(fā)中都會(huì)需要用到classpath*進(jìn)行文件配置,因?yàn)橥ǔ?huì)用到第三方的jar,所以大多情況下會(huì)需要查找這些jar的配置文件。
小結(jié)
以上就是【一心同學(xué)】對(duì)在MyBatis-Plus中【自定義SQL】的步驟和注意事項(xiàng)的講解,【自定義SQL】可以幫助我們?cè)贛yBatis-Plus的基礎(chǔ)上去編寫我們自己的SQL語(yǔ)句,讓我們的開發(fā)變得【十分高效】。
總結(jié)
到此這篇關(guān)于MyBatis-Plus自定義SQL的文章就介紹到這了,更多相關(guān)MyBatis-Plus自定義SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mybatis-plus自帶QueryWrapper自定義sql實(shí)現(xiàn)復(fù)雜查詢實(shí)例詳解
- MyBatisPlus自定義SQL的實(shí)現(xiàn)
- mybatis-plus使用xml自定義sql語(yǔ)句方式
- MyBatis-plus如何執(zhí)行自定義SQL
- Mybatis-Plus實(shí)現(xiàn)自定義SQL具體方法
- MyBatis-Plus 自定義sql語(yǔ)句的實(shí)現(xiàn)
- MybatisPlus使用queryWrapper如何實(shí)現(xiàn)復(fù)雜查詢
- MyBatis-Plus自定義SQL和復(fù)雜查詢的實(shí)現(xiàn)
相關(guān)文章
java 對(duì)象參數(shù)去空格方式代碼實(shí)例
這篇文章主要介紹了java 對(duì)象參數(shù)去空格方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Spring Cloud實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡(詳解)
負(fù)載均衡就是將負(fù)載(工作任務(wù),訪問請(qǐng)求)進(jìn)行分?jǐn)偟蕉鄠€(gè)操作單元(服務(wù)器,組件)上進(jìn)行執(zhí)行,根據(jù)負(fù)載均衡發(fā)生位置的不同,一般分為服務(wù)端負(fù)載均衡和客戶端負(fù)載均衡,本文給大家介紹Spring Cloud實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡的相關(guān)知識(shí),感興趣的朋友一起看看吧2024-03-03
Java用三元運(yùn)算符判斷奇數(shù)和偶數(shù)的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了Java用三元運(yùn)算符判斷奇數(shù)和偶數(shù)的簡(jiǎn)單實(shí)現(xiàn),需要的朋友可以參考下2014-02-02
聊聊Spring MVC JSON數(shù)據(jù)交互的問題
我們?cè)陂_發(fā)中后端經(jīng)常需要接受來(lái)自于前端傳遞的Json字符串?dāng)?shù)據(jù),怎么把Json字符串轉(zhuǎn)換為Java對(duì)象呢?下面小編給大家?guī)?lái)了Spring MVC JSON數(shù)據(jù)交互的問題,感興趣的朋友一起看看吧2021-10-10
crawler4j抓取頁(yè)面使用jsoup解析html時(shí)的解決方法
crawler4j對(duì)response沒有指定編碼的頁(yè)面,解析成亂碼,很讓人煩惱,下面給出解決方法,需要的朋友可以參考下2014-04-04
SpringBoot實(shí)戰(zhàn)之實(shí)現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解
這篇文章主要介紹了SpringBoot實(shí)戰(zhàn)之實(shí)現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09

