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!

推薦閱讀: