软件编程
位置:首页>> 软件编程>> java编程>> MyBatisPlus 自定义sql语句的实现

MyBatisPlus 自定义sql语句的实现

作者:IT贱男  发布时间:2021-11-11 07:51:20 

标签:MyBatis,Plus,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);
 }

来源:https://blog.csdn.net/weixin_38111957/article/details/91539019

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com