Sign in
Sign up
Explore
Enterprise
Education
Search
Help
Terms of use
About Us
Explore
Enterprise
Education
Gitee Premium
Gitee AI
AI teammates
Sign in
Sign up
Fetch the repository succeeded.
Open Source
>
Database Related
>
DB Development Package
&&
Donate
Please sign in before you donate.
Cancel
Sign in
Scan WeChat QR to Pay
Cancel
Complete
Prompt
Switch to Alipay.
OK
Cancel
Watch
Unwatch
Watching
Releases Only
Ignoring
2.3K
Star
11.6K
Fork
3.5K
GVP
baomidou
/
mybatis-plus
Code
Issues
13
Pull Requests
0
Insights
Pipelines
Service
JavaDoc
Quality Analysis
Jenkins for Gitee
Tencent CloudBase
Tencent Cloud Serverless
悬镜安全
Aliyun SAE
Codeblitz
SBOM
Don’t show this again
198
优化SimpleQuery,处理了值为空的情况,太牛了
Merged
阿超:3.0
baomidou:3.0
阿超
create on 2021-12-25 16:24
Clone/Download
HTTPS
SSH
Copy
Email Patch
Diff file
### 该Pull Request关联的Issue 暂无关联`Issue` ### 修改描述 优化SimpleQuery,处理了值为空的情况: 之前的情况: 假设数据库中表数据: | id | name | |----|--------| | 1 | ruben | | 2 | null | 我们构建一个`Enitity`(向`miemie`大佬致敬) ```java package com.baomidou.mybatisplus.test.rewrite; import lombok.Data; import java.io.Serializable; /** * @author miemie * @since 2020-06-23 */ @Data public class Entity implements Serializable { private static final long serialVersionUID = 6962439201546719734L; private Long id; private String name; } ``` 使用`SimplerQuery`进行查询 ```java Map<Long, String> idNameMap = SimpleQuery.map(Wrappers.lambdaQuery(), Entity::getId, Entity::getName); ``` 期望的数据格式如下:  这样我就可以通过`idNameMap.get(1L)`获取到`id`为`1L`对应的表数据中`name`字段的值,非常便利 但是如果是之前的版本,则会抛出`NullPointerException`(下方简称`NPE`)  原因是因为默认使用`Collectors#toMap`这个函数  它调用的是`HashMap#merge`  其中判断了如果`value`为空,则抛出`NPE`  而此处我期望的数据,它是允许`name`为`null`的 因此我进行了一点小修改:   然后再次执行,成功得到我们期望的值  还有一处修改,也是相同的道理,我期望得到如下结果: 这里获取到的`map`,`key`为表中的`name`,`value`则是对应`key`中`name`相同的数据组成的集合 为了方便测试,我再新增了一条数据: ```java // SqlHelper#getMapper是根据`entity`获取对应`mapper`的方法 BaseMapper<Entity> mapper = SqlHelper.getMapper(Entity.class); Entity entity = new Entity(); entity.setId(3L); entity.setName("ruben"); mapper.insert(entity); ``` 开始查询: ```java Map<String, List<Entity>> nameUsersMap = SimpleQuery.group(Wrappers.lambdaQuery(), Entity::getName); ``` 期望结果如下:  实际还是抛出了`NPE`:  这是因为原来使用的`Collectors#groupingBy`,它也对`key`进行了判空处理,实际上我们并不想丢掉这些数据   因为可以根据`nameUsersMap.get(null)`去顺带获取`name`为`null`的数据,最起码,个别`name`为`null`的数据不能影响我取其他的值,说白了就是你别给我抛出`NPE`... 所以我又施展了一点小修改:  测试成功通过!  当然我写的代码还是有一定的优化空间的,各位`dalao`好汉欢迎舔砖`Java`~各位的意见和建议我也会考虑采纳的 `Mp`陪伴我走过了两年,今天是圣诞节,祝`Mybatis-Plus`全体开发者圣诞快乐 :heart: !!! ### 测试用例 `com.baomidou.mybatisplus.test.toolkit.SimpleQueryTest` ### 修复效果的截屏 
How to merge Pull Request
git checkout 3.0
git pull https://gitee.com/VampireAchao/mybatis-plus.git 3.0
git push origin 3.0
Comments
0
Commits
1
Files
2
Checks
Code problems
0
Bulk operation
Expand
Collapse
Reviewer
Code Owner
Reviewer
DevYang
devyang
小锅盖
TaoYu_cd
yuxiaobin
hadoobing
zengzhihong
zengzhihong
Dervish
tld2018
凯凯大魔王
kaikaidamowang
东平王北星
ls9527
keep
zengzefeng
阿超
VampireAchao
青苗
jobob
miemie
miemieyaho
你有医保你先上
h825944942
No Setting
Min number
0
Tester
DevYang
devyang
小锅盖
TaoYu_cd
yuxiaobin
hadoobing
zengzhihong
zengzhihong
Dervish
tld2018
凯凯大魔王
kaikaidamowang
东平王北星
ls9527
keep
zengzefeng
阿超
VampireAchao
青苗
jobob
miemie
miemieyaho
你有医保你先上
h825944942
No Setting
Min number
0
Priority
Not specified
Serious
Main
Secondary
Unimportant
Label
Label settings
No Setting
Link Issue
No link issue
Successfully merged pull requests will close issues
Milestone
No related milestones
mybatis-plus 4.0 重构计划
Participators
(1)
Java
1
https://gitee.com/baomidou/mybatis-plus.git
git@gitee.com:baomidou/mybatis-plus.git
baomidou
mybatis-plus
mybatis-plus
Going to Help Center
Search
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
Repository Report
Back to the top
Login prompt
This operation requires login to the code cloud account. Please log in before operating.
Go to login
No account. Register