MyBatisPlus 自定義sql語句的實(shí)現(xiàn)
一、引言
Good Good Study,Day Day Up
MP自帶的條件構(gòu)造器雖然很強(qiáng)大,有時候也避免不了寫稍微復(fù)雜一點(diǎn)業(yè)務(wù)的sql,那么那么今天說說MP怎么自定義sql語句吧。
二、配置
自定義的sql當(dāng)然是寫在XML文件中的啦,那么首先來定義xml文件的位置,在yml配置文件如下
mybatis-plus: # 如果是放在src/main/java目錄下 classpath:/com/*/*/mapper/*Mapper.xml # 如果是放在resource目錄 classpath:/mapper/**.xml mapper-locations: classpath:/mapper/**.xml
三、具體實(shí)現(xiàn)
使用注解實(shí)現(xiàn):
在我們Mapper接口中定義自定義方法即可。
/**
* @Auther: IT賤男
* @Date: 2019/6/10 14:40
* @Description: User對象持久層
*/
public interface UserMapper extends BaseMapper<User> {
/**
*
* 如果自定義的方法還希望能夠使用MP提供的Wrapper條件構(gòu)造器,則需要如下寫法
*
* @param userWrapper
* @return
*/
@Select("SELECT * FROM user ${ew.customSqlSegment}")
List<User> selectByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);
/**
* 和Mybatis使用方法一致
* @param name
* @return
*/
@Select("SELECT * FROM user where name = #{name}")
List<User> selectByName(@Param("name") String name);
}
使用xml文件實(shí)現(xiàn):
使用xml一定要指定xml文件所在位置
/**
* @Auther: IT賤男
* @Date: 2019/6/10 14:40
* @Description: User對象持久層
*/
public interface UserMapper extends BaseMapper<User> {
/**
*
* 如果自定義的方法還希望能夠使用MP提供的Wrapper條件構(gòu)造器,則需要如下寫法
*
* @param userWrapper
* @return
*/
List<User> selectByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);
/**
* 和Mybatis使用方法一致
* @param name
* @return
*/
List<User> selectByName(@Param("name") String name);
}
<?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.mapper.UserMapper">
<select id="selectByName" resultType="com.example.demo.model.User">
SELECT * FROM user where name = #{name}
</select>
<select id="selectByMyWrapper" resultType="com.example.demo.model.User">
SELECT * FROM user ${ew.customSqlSegment}
</select>
</mapper>
測試測試:
/**
* 自定義sql查詢語句
*/
@Test
public void selectByMySelect() {
List<User> users = userMapper.selectByName("王天風(fēng)");
users.forEach(System.out::println);
}
/**
* 自定義sql使用Wrapper
*/
@Test
public void selectByMyWrapper() {
QueryWrapper<User> wrapper = new QueryWrapper();
wrapper.like("name", "雨").lt("age", 40);
List<User> users = userMapper.selectByMyWrapper(wrapper);
users.forEach(System.out::println);
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題
這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題,本文重點(diǎn)給大家介紹Spring-Cloud-OpenFeign的原理及問題解決方法,需要的朋友可以參考下2021-10-10
解決IDEA2020.2插件lombok報錯問題(親測有效)
這篇文章主要介紹了解決IDEA2020.2插件lombok報錯問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
java開源區(qū)塊鏈初始化創(chuàng)世區(qū)塊jdchain服務(wù)搭建
這篇文章主要介紹了java開源區(qū)塊鏈初始化創(chuàng)世區(qū)塊jdchain的服務(wù)搭建步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
一篇文章帶你了解MySQL數(shù)據(jù)庫基礎(chǔ)
這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下2021-08-08
ElasticSearch 動態(tài)映射實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了ElasticSearch 動態(tài)映射實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價值,感興趣的可以了解一下2022-04-04
SpringBoot2零基礎(chǔ)到精通之profile功能與自定義starter
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)profile功能與自定義starter2022-03-03
Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程
這篇文章主要介紹了Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

