【Mybatis-Plus的使用】

QueryWrapper的基础方法

类图

  • 上图绿色框为抽象类abstract
  • 蓝色框为正常class类,可new对象
  • 黄色箭头指向为父子类关系,箭头指向为父类
wapper介绍 :

Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
**LambdaQueryWrapper :**看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作
wapper方法图

QueryWrapper的使用

QueryWrapper处理日期判断大小问题
第一种:

注意:时间比较时,必须传入 JDK 的 Date 类型,不支持字符串。

    <if test="pageDtos.startTime !=null">
        and a.create_time &gt;= #{pageDtos.startTime}
    </if>
    <if test="pageDtos.overTime !=null">
        and a.create_time &lt;= #{pageDtos.overTime}
    </if>
if(Objects.nonNull(dto.getPushDataStart()) && Objects.nonNull(dto.getPushDataEnd())){
    queryWrapper.between(EduTollOrderEntity.PushData, dto.getPushDataStart(), dto.getPushDataEnd());
} else if(Objects.nonNull(dto.getPushDataStart())){
    queryWrapper.ge(EduTollOrderEntity.PushData, dto.getPushDataStart());
} else if(Objects.nonNull(dto.getPushDataEnd())){
    queryWrapper.le(EduTollOrderEntity.PushData, dto.getPushDataEnd());
}
第二种:
QueryWrapper qw = new QueryWrapper();
qw.apply(DATE(createtime) >= STR_TO_DATE(’”+rqq+" 00:00:00’,’%Y-%m-%d %H:%i:%s’)");
qw.apply(DATE(createtime) <= STR_TO_DATE(’”+rqz+" 23:59:59’,’%Y-%m-%d %H:%i:%s’)");

Page page = new Page<>(pageIndex, pageSize);
IPage iPage = iXtRzService.page(page,qw);
List list =iPage.getRecords();

注意:DATE_FORMAT(date,format)函数则是把数据库的日期转换为对应的字符串格式

SELECT STR_TO_DATE('2017-01-06 10:20:30','%Y-%m-%d %H:%i:%s') AS result;
QueryWrapper查询的高级用法
查询指定字段

通过select()查询指定字段,同时可对字段进行Mysql函数处理

QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.select("service_code as serviceCode", "sum(num) as num");
设置limit

通过last(),效果等同于limit

QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.last("limit 0,5");
查询中使用函数

例如,在查询IP时,想使用INET_ATON()函数,可以使用apply()实现

QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.apply("INET_ATON(qsip) <= INET_ATON({0})", ipQuery);
queryWrapper.apply("INET_ATON(zzip) >= INET_ATON({0})", ipQuery);

注意:INET_ATON()是一个计算机函数,将一个字符串IP地址转换为一个32位的网络序列IP地址。

select * from ip_table where inet_aton(ip) > inet_aton('192.168.1.3') and inet_aton(ip) < inet_aton('192.168.1.20');
分页插件

MyBatisPlus也内置了分页插件可以直接使用
如何使用:
首先需要在MyBatisPlus的配置类里面配置一个分页插件,如下图:
在这里插入图片描述

其次就是测试如下图:
在这里插入图片描述

模糊匹配问题
模糊匹配多个字段
SELECT * FROM Student WHERE del_status='0' AND (name LIKE '%张%' OR address LIKE '%张%');

使用Mybatis-Plus表达如下,这样的话就可以拼接多个模糊匹配的字段,防止出错

userWrapper.and(
	wrapper -> 
		wrapper.like("name", keywords).or().like("address", keywords)
);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值