mybatis-plus 是一个 mybatis 的增强工具,在 mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 mybatis-plus 中常用复杂查询(如 limit、order by、group by、having、like 等)的引例:
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 复杂查询内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论