当前位置: 代码网 > it编程>编程语言>Java > MybatisPlus较全常用复杂查询的示例(limit、orderby、groupby、having、like...)

MybatisPlus较全常用复杂查询的示例(limit、orderby、groupby、having、like...)

2025年12月10日 Java 我要评论
mybatis-plus 是一个 mybatis 的增强工具,在 mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 mybatis-plus 中常用复杂查询(如limit、o

mybatis-plus 是一个 mybatis 的增强工具,在 mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 mybatis-plus 中常用复杂查询(如 limitorder bygroup byhavinglike 等)的引例:

1. 环境准备

首先,确保你已经在项目中添加了 mybatis-plus 的依赖。以 maven 为例:

<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
    <version>3.5.3.1</version>
</dependency>

2. 实体类和 mapper 接口

假设我们有一个 user 实体类和对应的 usermapper 接口:

import com.baomidou.mybatisplus.annotation.tableid;
import com.baomidou.mybatisplus.annotation.tablename;
import lombok.data;
 
@data
@tablename("user")
public class user {
    @tableid
    private long id;
    private string name;
    private integer age;
    private string email;
}
import com.baomidou.mybatisplus.core.mapper.basemapper;
import org.apache.ibatis.annotations.mapper;
 
@mapper
public interface usermapper extends basemapper<user> {
}

3. 常用复杂查询示例

3.1limit查询

limit 用于限制查询结果的数量。在 mybatis-plus 中,可以使用 page 类来实现类似 limit 的功能。

import com.baomidou.mybatisplus.core.metadata.ipage;
import com.baomidou.mybatisplus.extension.plugins.pagination.page;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
 
import java.util.list;
 
@service
public class userservice {
    @autowired
    private usermapper usermapper;
 
    public list<user> getuserswithlimit(int pagenum, int pagesize) {
        page<user> page = new page<>(pagenum, pagesize);
        ipage<user> userpage = usermapper.selectpage(page, null);
        return userpage.getrecords();
    }
}

3.2order by查询

order by 用于对查询结果进行排序。在 mybatis-plus 中,可以使用 querywrapper 来实现排序。

import com.baomidou.mybatisplus.core.conditions.query.querywrapper;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
 
import java.util.list;
 
@service
public class userservice {
    @autowired
    private usermapper usermapper;
 
    public list<user> getusersorderbyagedesc() {
        querywrapper<user> wrapper = new querywrapper<>();
        wrapper.orderbydesc("age");
        return usermapper.selectlist(wrapper);
    }
}

3.3group by和having查询

group by 用于对查询结果进行分组,having 用于筛选分组后的结果。在 mybatis-plus 中,可以使用 querywrapper 结合 groupby 和 having 方法来实现。

import com.baomidou.mybatisplus.core.conditions.query.querywrapper;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
 
import java.util.list;
import java.util.map;
 
@service
public class userservice {
    @autowired
    private usermapper usermapper;
 
    public list<map<string, object>> getusersgroupbyagehavingcount() {
        querywrapper<user> wrapper = new querywrapper<>();
        wrapper.select("age", "count(*) as count")
               .groupby("age")
               .having("count(*) > 1");
        return usermapper.selectmaps(wrapper);
    }
}

3.4like查询

like 用于模糊查询。在 mybatis-plus 中,可以使用 querywrapper 的 like 方法来实现。

import com.baomidou.mybatisplus.core.conditions.query.querywrapper;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
 
import java.util.list;
 
@service
public class userservice {
    @autowired
    private usermapper usermapper;
 
    public list<user> getuserslikename(string keyword) {
        querywrapper<user> wrapper = new querywrapper<>();
        wrapper.like("name", keyword);
        return usermapper.selectlist(wrapper);
    }
}

4. 测试代码

import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.commandlinerunner;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
 
import java.util.list;
import java.util.map;
 
@springbootapplication
public class application implements commandlinerunner {
    @autowired
    private userservice userservice;
 
    public static void main(string[] args) {
        springapplication.run(application.class, args);
    }
 
    @override
    public void run(string... args) throws exception {
        // limit 查询
        list<user> userswithlimit = userservice.getuserswithlimit(1, 10);
        system.out.println("limit 查询结果:" + userswithlimit);
 
        // order by 查询
        list<user> usersorderbyagedesc = userservice.getusersorderbyagedesc();
        system.out.println("order by 查询结果:" + usersorderbyagedesc);
 
        // group by 和 having 查询
        list<map<string, object>> usersgroupbyagehavingcount = userservice.getusersgroupbyagehavingcount();
        system.out.println("group by 和 having 查询结果:" + usersgroupbyagehavingcount);
 
        // like 查询
        list<user> userslikename = userservice.getuserslikename("张");
        system.out.println("like 查询结果:" + userslikename);
    }
}

以上示例展示了 mybatis-plus 中常用复杂查询的使用方法,你可以根据实际需求进行调整。

到此这篇关于mybatisplus较全常用复杂查询的示例(limit、orderby、groupby、having、like...)的文章就介绍到这了,更多相关mybatisplus 复杂查询内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com