MyBatisPlus 自定义sql语句的实现
作者:IT贱男 时间:2021-11-11 07:51:20
一、引言
Good Good Study,Day Day Up
MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧。
二、配置
自定义的sql当然是写在XML文件中的啦,那么首先来定义xml文件的位置,在yml配置文件如下
mybatis-plus:
# 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml
# 如果是放在resource目录 classpath:/mapper/**.xml
mapper-locations: classpath:/mapper/**.xml
三、具体实现
使用注解实现:
在我们Mapper接口中定义自定义方法即可。
/**
* @Auther: IT贱男
* @Date: 2019/6/10 14:40
* @Description: User对象持久层
*/
public interface UserMapper extends BaseMapper<User> {
/**
*
* 如果自定义的方法还希望能够使用MP提供的Wrapper条件构造器,则需要如下写法
*
* @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文件实现:
使用xml一定要指定xml文件所在位置
/**
* @Auther: IT贱男
* @Date: 2019/6/10 14:40
* @Description: User对象持久层
*/
public interface UserMapper extends BaseMapper<User> {
/**
*
* 如果自定义的方法还希望能够使用MP提供的Wrapper条件构造器,则需要如下写法
*
* @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("王天风");
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);
}
来源:https://blog.csdn.net/weixin_38111957/article/details/91539019
标签:MyBatis,Plus,sql语句
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Springmvc拦截器执行顺序及各方法作用详解
2023-06-10 08:11:46
win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法
2022-09-18 07:27:57
详解Spring ApplicationContext加载过程
2023-07-17 01:07:43
Java截取字符串的几种方法示例
2023-11-29 12:36:32
![](https://img.aspxhome.com/file/2023/5/60585_0s.png)
Java探索之Feign入门使用详解
2023-08-18 03:38:06
Java httpClient介绍以及使用示例
2023-03-15 23:51:15
使Java的JButton文字隐藏功能的实现(不隐藏按钮的前提)
2022-06-01 23:54:33
![](https://img.aspxhome.com/file/2023/0/83130_0s.gif)
基于JavaMail的Java邮件发送
2022-10-30 18:56:56
![](https://img.aspxhome.com/file/2023/1/60931_0s.jpg)
使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能
2023-07-23 14:32:47
![](https://img.aspxhome.com/file/2023/3/75653_0s.png)
Java实现经典游戏飞机大战-I的示例代码
2023-07-30 15:45:22
![](https://img.aspxhome.com/file/2023/1/68751_0s.jpg)
Java 比较接口comparable与comparator区别解析
2022-11-26 20:54:24
java开发微信分享接口的步骤
2021-08-22 12:30:59
![](https://img.aspxhome.com/file/2023/2/61652_0s.png)
spring使用OXM进行对象XML映射解析
2022-11-11 16:05:19
![](https://img.aspxhome.com/file/2023/1/60661_0s.jpg)
Java深入浅出理解快速排序以及优化方式
2023-01-17 13:50:44
![](https://img.aspxhome.com/file/2023/9/69319_0s.jpg)
Java 实战练手项目之酒店管理系统的实现流程
2022-07-30 09:05:10
![](https://img.aspxhome.com/file/2023/1/71201_0s.png)
基于<aop:aspect>与<aop:advisor>的区别
2023-01-22 21:53:35
Spring MVC项目中log4J和AOP使用详解
2022-11-16 08:36:29
![](https://img.aspxhome.com/file/2023/0/76540_0s.png)
SpringBoot使用SensitiveWord实现敏感词过滤
2023-09-06 19:35:21
Java开发实现猜拳游戏
2023-09-27 03:21:46
Java实现经典游戏黄金矿工的示例代码
2022-01-09 16:35:41
![](https://img.aspxhome.com/file/2023/2/79222_0s.jpg)