MyBatisPlus 自定义sql语句的实现

 更新时间:2019年08月14日 10:13:51   作者:IT贱男  
这篇文章主要介绍了MyBatisPlus 自定义sql语句的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、引言

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);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java虚拟机中多线程总结

    java虚拟机中多线程总结

    在本篇内容中小编给大家分享的是关于java虚拟机中多线程的知识点总结内容,需要的朋友们参考学习下。
    2019-06-06
  • java 实现websocket的两种方式实例详解

    java 实现websocket的两种方式实例详解

    这篇文章主要介绍了java 实现websocket的两种方式实例详解,一种使用tomcat的websocket实现,一种使用spring的websocket,本文通过代码给大家介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • Java之Spring AOP 实现用户权限验证

    Java之Spring AOP 实现用户权限验证

    本篇文章主要介绍了Java之Spring AOP 实现用户权限验证,用户登录、权限管理这些是必不可少的业务逻辑,具有一定的参考价值,有兴趣的可以了解一下。
    2017-02-02
  • 浅析Java中comparator接口与Comparable接口的区别

    浅析Java中comparator接口与Comparable接口的区别

    本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧
    2016-10-10
  • SpringBoot如何整合nacos详解

    SpringBoot如何整合nacos详解

    今天教各位小伙伴SpringBoot是如何整合nacos的,文中有非常详细的代码示例,对正在学习Java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-06-06
  • hibernate和mybatis对比分析

    hibernate和mybatis对比分析

    通过本文给分享了hibernate和mybatis对比分析,从开发对比,系统调优对比,对象管理与抓取策略,缓存机制对比等方面给大家详细介绍,需要的朋友参考下吧
    2017-09-09
  • Java使用Condition控制线程通信的方法实例详解

    Java使用Condition控制线程通信的方法实例详解

    这篇文章主要介绍了Java使用Condition控制线程通信的方法,结合实例形式分析了使用Condition类同步检测控制线程通信的相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • Java函数式开发 Optional空指针处理

    Java函数式开发 Optional空指针处理

    本文主要介绍Java函数式开发 Optional空指针处理,这里整理了相关资料,及示例代码,有兴趣的小伙伴可以参考下
    2016-09-09
  • java中实现兼容ie6 7 8 9的spring4+websocket

    java中实现兼容ie6 7 8 9的spring4+websocket

    这篇文章主要介绍了java中实现兼容ie6 7 8 9的spring4+websocket程序代码,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • Java游戏俄罗斯方块的实现实例

    Java游戏俄罗斯方块的实现实例

    这篇文章主要介绍了Java游戏俄罗斯方块的实现实例的相关资料,这里实现简单的俄罗斯方块帮助大家学习理解基础知识,需要的朋友可以参考下
    2017-08-08

最新评论