Mybatis_Plus学习用法一
时间:2019-08-31
本文章向大家介绍Mybatis_Plus学习用法一,主要包括Mybatis_Plus学习用法一使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天主要上周写账户模块以及推广模块中的一部分做一下总结,作为一个新人,代码做的不够谨慎,很多部分是需要更改的(现在唯一目标是做到代码写的可以用,不许出先不规范),以下代码记录主要是改进过得代码。很感谢领导和同事的帮助。以下代码的改良主要他们帮助修改。感恩。
接触到mybatis_Puls的时候是在开始做后台,由于项目经理打好模板的,我自己写了大量的SQL语句,这里也得到了批评,mybatis_Puls的优点减少大量的SQL。https://mp.baomidou.com/更多好处见此处官方。
@Override
public PageModel<List<CompanyRechargeComposeEntity>> findPage(CompanyRechargePageSearchEntity param) {
PageHelper.startPage(param.getPageNO(), param.getPageSize());
LambdaQueryWrapper<CompanyRecharge> queryWrapper = new QueryWrapper<CompanyRecharge>().lambda().orderByDesc(CompanyRecharge::getCreatedAt);
if (null != param && param.getStartDate() != null && param.getEndDate() != null) {
queryWrapper.between(CompanyRecharge::getCreatedAt, param.getStartDate(), param.getEndDate());
}
if (null != param && param.getCompanyId() != null) {
queryWrapper.eq(CompanyRecharge::getCompanyId, param.getCompanyId());
}
List<CompanyRecharge> list = baseMapper.selectList(queryWrapper);
PageInfo pageInfo = new PageInfo<>(list);
List<CompanyRechargeComposeEntity> result = new ArrayList<>();
if (null != list) {
List<CompanyContactEntity> companyList = companyService.findAll();
list.stream().map(cr -> {
CompanyRechargeComposeEntity crc = new CompanyRechargeComposeEntity();
BeanUtils.copyProperties(cr, crc);
for (CompanyContactEntity c : companyList) {
if (cr.getCompanyId().equals(c.getCompanyId())) {
crc.setCompanyName(c.getCompanyName());
}
}
result.add(crc);
return crc;
}).collect(Collectors.toList());
}
return PageModel.<List<CompanyRechargeComposeEntity>>builder().count((int) pageInfo.getTotal()).rows(result).build();
}
此方法是带有分页的查询方法。
LambdaQueryWrapper和Wrapper的区别:
今天做多条件查询的时候(并非在这个方法上,此处方法完全非本人改写):
LambdaQueryWrapper用于多条件查询比较方便:
LambdaQueryWrapper<BaiduAccountContact> queryWrapper = new QueryWrapper<BaiduAccountContact>().lambda();
if(StringUtils.isNotEmpty(param.getAdvertType())){
queryWrapper = queryWrapper.eq(BaiduAccountContact::getAdvertType,param.getAdvertType());
}
if(StringUtils.isNotEmpty(param.getBacName())){
queryWrapper = queryWrapper.eq(BaiduAccountContact::getBacName,param.getBacName());
}
Wrapper多条件查询的时候是需要多加判断。当进行多个条件同时筛选时,倒数第二个条件是会被最后的条件覆盖掉。
对象列表 - > 字符串列表,即:获取对象集合中所有的userName的集合。——map
注意:stream().map( A::getXXX ) 等价于 stream().map(t -> t.getXXX)
aList.stream.map(...).collect(Collectors.toList())此处解释来源
https://www.cnblogs.com/pikachu-zhaof/p/9724826.html
以上对于循环遍历部分,当时领导说空闲时候写个分页,这样就不需要写循环遍历了,不是很明白,还是我会错了意?
public List<BaiduAccountComposeEntity> findAll() {
LambdaQueryWrapper<BaiduAccount> queryWrapper = new QueryWrapper<BaiduAccount>().lambda().orderByDesc(BaiduAccount::getCreatedAt);
List<BaiduAccount> list = baseMapper.selectList(queryWrapper);
List<BaiduAccountComposeEntity> result = new ArrayList<>();
if (null != list) {
List<BaiduAccountCampaign> baiduAccountCampaignList = baiduAccountCampaignService.findList();
if ( null !=baiduAccountCampaignList ){
result=list.stream().map(ba -> {
BaiduAccountComposeEntity bc = new BaiduAccountComposeEntity();
BeanUtils.copyProperties(ba, bc);
bc.setCampaignList(baiduAccountCampaignList.stream().filter(cam->cam.getAccountId().equals(ba.getAccountId())).collect(Collectors.toList()));
return bc;
}).collect(Collectors.toList());
}
}
return result;
}
标注部分主要是对集合存放的案例。
结尾:这次有点匆忙,公司有点吵。就不写自己的体会了,直接粘贴了在这部分代码。希望以后经常记下自己代码体会细节。
原文地址:https://www.cnblogs.com/study-code-he/p/11440390.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 除Innodb和MyISAM外MySQL还有哪些存储引擎
- MySQL自身对性能的影响
- Python 技术篇-用pywin32库实现读写剪贴板
- Excel 技巧篇-在指定范围内生成指定小数位的随机数
- PyQt5 技巧篇-窗口置顶设置,如何使窗口始终显示在最前面
- 解决npm install时报错无法安装chromedriver的问题
- 解决集成jpa时无法创建entityManagerFactory的问题
- Spring船新版推出的WebFlux,是兄弟就来学我
- JDK9特性-Reactive Stream 响应式流
- Java函数式编程之Stream流编程
- 使用docker安装elasticsearch伪分布式集群以及安装ik中文分词插件
- PyQt5 技巧篇-如何让窗体只显示关闭按钮
- Gradle多项目构建与jar包发布
- Gradle初体验
- hexo初始化