MyBatis-Plus自定義SQL的詳細過程記錄
前言
當我們在開發過程中,如果MyBatis-Plus中的SQL語句並不能滿足我們的需求,那麼我們可以在XML文件中自定義SQL語句,這樣的話我們就可以在MyBatis-Plus的基礎上繼續提高我們的開發效率瞭。本篇博客也將講解如何在src/main/resource目錄下和src/main/java目錄下對XML的配置。
一、在src/main/resource目錄下編寫XML
1.1 目錄結構
我們將UserMapper.xml放在resource下的mapper目錄中,我的整個項目目錄如下
1.2 編寫實體類對應的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 測試
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); } }
結果:
可以發現,成功出現我們的信息瞭!
二、在src/main/java目錄下編寫XML
2.1 目錄結構
TIp:在java下的mapeer目錄中建立存放我們的xml配置的目錄xml包
2.2 編寫實體類對應的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(重要)🔥
這一步非常重要,因為如果沒有配置pom.xml就去運行,那麼會出現以下的錯誤。
為什麼呢?
這是因為在maven默認情況下是不會將src/main/java目錄的xml等資源打包進入class文件夾的,而是直接忽略掉。不信的話我們去看一下target目錄。
可以發現這裡並沒有將我們的xml文件打包進去。
解決方案:配置pom.xml
我們隻需在pom中加入如下配置,告訴idea,在編譯的時候將src/main/java下的xml一起打包進class文件夾中,這樣也就不會報異常瞭。
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
2.6 測試
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); } }
結果:
可以發現成功出現我們的數據庫信息瞭!
我們再去查看以下target目錄:
可以發現,已經把我們的xml配置導進來瞭,如果發現還是沒有的話,建議把target目錄刪除,然後重新運行,就可以重新生成target目錄瞭,這時候就能發現你的xml文件瞭。
三、classpath和classpath*的區別
classpath:隻會在你的class路徑下尋找
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進行查找
一般來說,在大型公司的項目開發中都會需要用到classpath*進行文件配置,因為通常會用到第三方的jar,所以大多情況下會需要查找這些jar的配置文件。
小結
以上就是【一心同學】對在MyBatis-Plus中【自定義SQL】的步驟和註意事項的講解,【自定義SQL】可以幫助我們在MyBatis-Plus的基礎上去編寫我們自己的SQL語句,讓我們的開發變得【十分高效】。
總結
到此這篇關於MyBatis-Plus自定義SQL的文章就介紹到這瞭,更多相關MyBatis-Plus自定義SQL內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺談MyBatis執行SQL的兩種方式
- Mybatis結果集映射與生命周期詳細介紹
- 詳解Mybatis中的CRUD
- mybatis的動態SQL和模糊查詢實例詳解
- 一篇超詳細的Spring Boot整合Mybatis文章