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语句
0
投稿

猜你喜欢

  • 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
  • Java探索之Feign入门使用详解

    2023-08-18 03:38:06
  • Java httpClient介绍以及使用示例

    2023-03-15 23:51:15
  • 使Java的JButton文字隐藏功能的实现(不隐藏按钮的前提)

    2022-06-01 23:54:33
  • 基于JavaMail的Java邮件发送

    2022-10-30 18:56:56
  • 使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能

    2023-07-23 14:32:47
  • Java实现经典游戏飞机大战-I的示例代码

    2023-07-30 15:45:22
  • Java 比较接口comparable与comparator区别解析

    2022-11-26 20:54:24
  • java开发微信分享接口的步骤

    2021-08-22 12:30:59
  • spring使用OXM进行对象XML映射解析

    2022-11-11 16:05:19
  • Java深入浅出理解快速排序以及优化方式

    2023-01-17 13:50:44
  • Java 实战练手项目之酒店管理系统的实现流程

    2022-07-30 09:05:10
  • 基于<aop:aspect>与<aop:advisor>的区别

    2023-01-22 21:53:35
  • Spring MVC项目中log4J和AOP使用详解

    2022-11-16 08:36:29
  • SpringBoot使用SensitiveWord实现敏感词过滤

    2023-09-06 19:35:21
  • Java开发实现猜拳游戏

    2023-09-27 03:21:46
  • Java实现经典游戏黄金矿工的示例代码

    2022-01-09 16:35:41
  • asp之家 软件编程 m.aspxhome.com