Java教程

MyBatis-Plus 自定义sql语句搭配调用QueryWrapper的实现条件查询

本文主要是介绍MyBatis-Plus 自定义sql语句搭配调用QueryWrapper的实现条件查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、引言
MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧。另外,除了下文提到的通过queryWrapper实现筛选以外,调用查询时,如果你需要做分页,通过mybatisPlus提供的分页接口IPage,能够避免自己手写分页的sql语句

二、具体实现
使用注解实现:

在我们Mapper接口中定义自定义方法即可。

 public interface UserMapper extends BaseMapper<TaskEntity> {    
 
  /**    
   * 如果自定义的方法还希望能够使用MP提供的Wrapper条件构造器,则需要如下写法
   * @param userWrapper
   */
   @Select("SELECT * FROM user ${ew.customSqlSegment}")
   List<StatisticsCommunityModel> getCockpitCommunityTop(@Param(Constants.WRAPPER)Wrapper<TaskEntity> userWrapper);

使用xml实现:

public interface TaskMapper extends BaseMapper<TaskEntity> {

    List<StatisticsCommunityModel> getCockpitCommunityTop(@Param(Constants.WRAPPER) Wrapper<TaskEntity> userWrapper);
}
<select id="getCockpitCommunityTop" resultType="com.chinaentropy.community.domain.model.task.StatisticsCommunityModel">
         SELECT community_name,community_code,COUNT(community_name) AS community_count FROM tk_task ${ew.customSqlSegment}  GROUP BY community_name,community_code  ORDER BY COUNT(community_name)  DESC limit 10
    </select>

无论使用哪种方式实现两者的搭配使用,
其核心都是 ${ew.customSqlSegment} 在SQL语句占位,@Param(Constants.WRAPPER)Wrapper userWrapper) 设置入参
最后在需要的时候传入已经配置好的queryWrapper
例如:taskMapper.getCockpitCommunityTop(queryWrapper);

这篇关于MyBatis-Plus 自定义sql语句搭配调用QueryWrapper的实现条件查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!