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 配置可刷新項(xiàng)目無法啟動的問題
這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題,本文重點(diǎn)給大家介紹Spring-Cloud-OpenFeign的原理及問題解決方法,需要的朋友可以參考下2021-10-10解決IDEA2020.2插件lombok報錯問題(親測有效)
這篇文章主要介紹了解決IDEA2020.2插件lombok報錯問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08java開源區(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-08ElasticSearch 動態(tài)映射實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了ElasticSearch 動態(tài)映射實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價值,感興趣的可以了解一下2022-04-04SpringBoot2零基礎(chǔ)到精通之profile功能與自定義starter
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)profile功能與自定義starter2022-03-03Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程
這篇文章主要介紹了Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08