MybatisPlus经典示例:使用Wrapper查询指定字

🍬🍬🍬文章目录

前言:新公司老大不让写sql,郁闷了好几天。我总觉得xml里写sql效率应该很高呀。没办法,只能听话用MybatisPlus的CURD和Wrapper。

begin:平时Wrapper大家都知道一般是加在where后的条件,但是我想灵活地写select后的字段怎么办呢?

🍬 01. 只查询指定字段

  • 使用select(字段1,字段2….) .select(ClientBanner::isDelState,ClientBanner::getBusinessId);
1
2
3
4
5
6
7
8
9
10
java复制代码    public List<ClientBanner> getListById(String businessId) {
LambdaQueryWrapper<ClientBanner> wrapper = new LambdaQueryWrapper();
// 商家图片,未删除,可用状态
wrapper.eq(ClientBanner::getBusinessId,businessId)
.eq(ClientBanner::isDelState,false)
.eq(ClientBanner::isUsable,true)
.select(ClientBanner::isDelState,ClientBanner::getBusinessId);
List<ClientBanner> list = this.list(wrapper);
return list;
}
  • 控制台打印
1
2
3
java复制代码: ==>  Preparing: SELECT del_state,business_id FROM client_banner WHERE business_id = ? AND del_state = ? AND usable = ? 
: ==> Parameters: 55456(String), false(Boolean), true(Boolean)
: <== Total: 2

🍬 02. 对查询字段进行函数处理

  • 使用QueryWrapper,传入数据库字段的时候加上函数"left(content,2) content" 这种函数处理,==如果你是用封装的对象接收,别忘了起别名==
1
2
3
4
5
6
7
8
java复制代码    public IPage<ClientEncyArticles> listBySplitPage(SplitPageDTO dto) {
QueryWrapper<ClientEncyArticles> wrapper = new QueryWrapper<ClientEncyArticles>();
wrapper.eq("del_state",false)
.orderByDesc("create_time")
.select("id","author","left(content,2) content","cover_picture","create_time");
IPage<ClientEncyArticles> page = this.page(new Page<>(dto.getPage(), dto.getPageSize()), wrapper);
return page;
}
  • 控制台打印
1
2
3
java复制代码 : ==>  Preparing: SELECT id,author,left(content,2),cover_picture,create_time FROM client_ency_articles WHERE del_state = ? ORDER BY create_time DESC LIMIT ?,? 
: ==> Parameters: false(Boolean), 0(Long), 10(Long)
: <== Total: 10

🍬 03. 排除指定(过滤)字段查询

1
2
3
java复制代码==>  Preparing: SELECT id,author,type,content,cover_picture,create_time FROM client_ency_articles WHERE del_state=? AND del_state = ? ORDER BY create_time DESC LIMIT ?,? 
==> Parameters: false(Boolean), false(Boolean), 0(Long), 10(Long)
<== Total: 10

🍬拓:自定义where后的所有内容,直接写sql

  • 文档:last函数 无视优化规则直接拼接到sql的最后,这样select按照本文上边的方法自定义,剩下的直接last函数开搞(也不懂源码,不知道无视他的优化规则会发生啥,自己注意sql的效率应该没啥问题)
    在这里插入图片描述

🍬单独set某个字段

文档链接,官方源码:

例:
在这里插入图片描述

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%