Mybatis简单查询
前言
好记性不如烂笔头,记录内容,方便日后复制。
一、时间区间查询
简单记录两种时间查询的方式:
1.xml中实现
controller 文件
@ApiOperation(value="查询用户的通知列表",notes = "查询用户的通知列表")
@PostMapping("/queryUserNoticeList")
public Result<IPage<NcNoticeDeliverVo>> queryUserNoticeList(
@ApiParam(name = "startTime", value = "开始时间") @RequestParam(required = false) String startTime,
@ApiParam(name = "endTime", value = "结束时间") @RequestParam(required = false) String endTime,
@ApiParam(name = "page", value = "页码") @RequestParam(defaultValue = "0") Integer page,
@ApiParam(name = "size", value = "数量") @RequestParam(defaultValue = "10") Integer size) {
// 开始时间
Date startDate = null;
Date endDate = null;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(StringUtils.isNotBlank(startTime)){
startDate = simpleDateFormat.parse(startTime);
}
if(StringUtils.isNotBlank(endTime)){
endDate = simpleDateFormat.parse(endTime);
}
} catch (ParseException e) {
throw new ServiceException("时间转换异常!");
}
Page<NcNoticeDeliverVo> queryPage = new Page<>(page,size);
return new Result(CommonCode.SUCCESS, "查询成功!",
ncNoticeDeliverService.queryUserNoticeList(queryPage, startDate, endDate));
}
xml 文件
<if test='startDate != null'>
AND <![CDATA[ DATE_FORMAT(a.CREATED_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{startDate},'%Y-%m-%d')]]>
</if>
<if test='endDate != null'>
AND <![CDATA[ DATE_FORMAT(a.CREATED_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{endDate},'%Y-%m-%d')]]>
</if>
注意:
%Y-%m-%d %H:%i:%s 年月日 时分秒,可根据实际情况进行使用
< <
<= <=
> >
>= >=
& &
' '
" "
2. Mybatis Plus 方式
Controller 文件
@ApiOperation(value="列表(分页,没有筛选条件)",notes = "列表(分页,没有筛选条件)")
@PostMapping("/queryList")
public Result<IPage<DpRecord>> queryList(
@ApiParam(name = "startTime", value = "开始时间") @RequestParam(required = false) String startTime,
@ApiParam(name = "endTime", value = "结束时间") @RequestParam(required = false) String endTime,
@ApiParam(name = "page", value = "页码") @RequestParam(defaultValue = "0") Integer page,
@ApiParam(name = "size", value = "数量") @RequestParam(defaultValue = "10") Integer size) {
// 时间校验
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(StringUtils.isNotBlank(startTime)){
simpleDateFormat.parse(startTime);
}
if(StringUtils.isNotBlank(endTime)){
simpleDateFormat.parse(endTime);
}
} catch (ParseException e) {
throw new ServiceException("时间转换异常!");
}
Page<DpRecord> queryPage = new Page<DpRecord>(page,size);
return new Result(CommonCode.SUCCESS, "查询成功!",
dpRecordService.queryList(queryPage, startTime, endTime));
}
serviceImpl 文件
@Override
public IPage<DpRecord> queryList(Page<DpRecord> iPage, String startTime, String endTime){
// 查询条件拼装
LambdaQueryWrapper<DpRecord> lambdaQueryWrapper = Wrappers.<DpRecord>query().lambda();
if(StringUtils.isNotBlank(startTime)){
lambdaQueryWrapper.apply("date_format ("+DpRecord.START_TIME+",'%Y-%m-%d') >= date_format('" + startTime + "','%Y-%m-%d')");
}
if(StringUtils.isNotBlank(endTime)){
lambdaQueryWrapper.apply("date_format ("+DpRecord.END_TIME+",'%Y-%m-%d') <= date_format('" + endTime + "','%Y-%m-%d')");
}
lambdaQueryWrapper.orderByDesc(DpRecord::getStartTime);
return this.page(iPage, lambdaQueryWrapper);
}
model文件
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("dp_record")
@ApiModel(value="DpRecord对象", description="数据处理记录 ")
public class DpRecord implements Serializable {
@TableField(exist = false)
public static final String START_TIME = "START_TIME";
@TableField(exist = false)
public static final String END_TIME = "END_TIME";
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
@TableId(value = "ID", type = IdType.ASSIGN_ID)
private String id;
}
二、模糊查询
简单记录两种模糊查询的方式:
1.xml中实现
Controller 文件
@ApiOperation(value="列表(分页,没有筛选条件)",notes = "列表(分页,没有筛选条件)")
@PostMapping("/queryList")
public Result<IPage<DpProcess>> queryList(
@ApiParam(name = "searchParam", value = "模糊搜索条件:支持名称、代码、影响集合等条件的查询") @RequestParam(required = false) String searchParam,
@ApiParam(value = "页码",name = "page") @RequestParam(defaultValue = "0") Integer page,
@ApiParam(value = "数量",name = "size") @RequestParam(defaultValue = "10") Integer size) {
Page<DpProcess> iPage = new Page<>(page, size);
return new Result(CommonCode.SUCCESS, "查询成功!", dpProcessService.queryList(iPage, enabled, searchParam, category));
}
xml 文件
<if test = 'searchParam != null and searchParam != ""'>
and CONCAT_WS('|',a.PY_CODE, '|',a.WB_CODE, '|',a.THIRD_CODE, '|',a.ROLE_NAME ) LIKE CONCAT('%',#{searchParam},'%')
</if>
2. Mybatis Plus 方式
Controller 文件
@ApiOperation(value="列表(分页,没有筛选条件)",notes = "列表(分页,没有筛选条件)")
@PostMapping("/queryList")
public Result<IPage<DpProcess>> queryList(
@ApiParam(name = "searchParam", value = "模糊搜索条件:支持名称、代码、影响集合等条件的查询") @RequestParam(required = false) String searchParam,
@ApiParam(value = "页码",name = "page") @RequestParam(defaultValue = "0") Integer page,
@ApiParam(value = "数量",name = "size") @RequestParam(defaultValue = "10") Integer size) {
Page<DpProcess> iPage = new Page<>(page, size);
return new Result(CommonCode.SUCCESS, "查询成功!", dpProcessService.queryList(iPage, enabled, searchParam, category));
}
serviceImpl 文件
@Override
public IPage<DpProcess> queryList(Page<DpProcess> iPage, String searchParam){
// 查询条件进行封装
LambdaQueryWrapper<DpProcess> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(searchParam)){
lambdaQueryWrapper.and(i -> i.like(DpProcess::getName, searchParam)
.or().like(DpProcess:: getCode, searchParam)
.or().like(DpProcess::getOutCols, searchParam));
}
return this.page(iPage, lambdaQueryWrapper);
}
Mybatis简单查询的更多相关文章
- MyBatis简单的增删改查以及简单的分页查询实现
MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...
- MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射
先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...
- Mybatis高级查询之一对一查询的四种方法
目录 1. 一对一查询 1.1 一对一嵌套结果查询 1.2 使用resultMap配置一对一映射 1.3 使用resultMap的association标签配置一对一映射 1.4 associatio ...
- MyBatis关联查询、多条件查询
MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...
- mybatis框架-查询用户表中的记录数
之前已经搭建过mybatis框架了,现在我们要用mybatis框架真正的干点事情了. 这是这个简单web项目的整体架构. 我们使用mybatis框架查询用户表中的记录数: 这是用户类: package ...
- MyBatis的查询
MyBatis的查询 在上一个MyBatis的核心API中介绍了SqlSessionFactoryBuilder.SqlSessionFactory以及SqlSession是什么,它们都有什么作用,本 ...
- 浅析MyBatis(二):手写一个自己的MyBatis简单框架
在上一篇文章中,我们由一个快速案例剖析了 MyBatis 的整体架构与整体运行流程,在本篇文章中笔者会根据 MyBatis 的运行流程手写一个自定义 MyBatis 简单框架,在实践中加深对 MyBa ...
- MyBatis 高级查询环境准备(八)
MyBatis 高级查询 之前在学习 Mapper XML 映射文件时,说到 resultMap 标记是 MyBatis 中最重要最强大也是最复杂的标记,而且还提到后面会详细介绍它的高级用法. 听到高 ...
- mybatis关联查询基础----高级映射
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...
随机推荐
- I类HDACs是乳酸化修饰“eraser”
赖氨酸酰化修饰 (lysine acylation) 是一种广泛存在的.进化上高度保守的蛋白质翻译后修饰 (post-translational modifications, PTMs) 类型,通过表 ...
- Kali中John的使用方法
John是一个破解系统密码的工具. 参数 John the Ripper 1.9.0-jumbo-1 OMP [linux-gnu 64-bit x86_64 AVX AC] Copyright (c ...
- 『Java』StringBuilder类使用方法
String类存在的问题 String类的底层是一个被final修饰的byte[],不能改变. 为了解决以上问题,可以使用java.lang.StringBuilder类. StringBuilder ...
- java常见面试题目
(面的初级到中级之间的,却有很多高级的问题) 总结一些常见的遇见的面试题(来自各方面收集) 1.开发中Java用了比较多的数据结构有哪些? 2.谈谈你对HashMap的理解,底层原理的基本实现,Has ...
- ubuntu与主机ping不通的解决办法(主机检测不到虚拟网卡)
文章目录 一.问题的出现与思路的转变 二.Ubuntu的网络适配器的俩种模式 1.桥接模式( Bridged) 2.NAT模式 三.桥接模式下的网卡配置出现问题 四.解决问题的步骤(一次通过) 集线器 ...
- noip31
T1 关于我考场上乱冲平衡树这件sb事 很快就冲了出来 然后手抖打错样例,把我hack了 sb字典序 正解: 先不考虑字典序问题,先将最大分数找出来,然后按照顺序考虑每一个位置填什么那个数能让分数尽可 ...
- 单链表(Java--尚硅谷)
基础知识 大体结构和C++的链表差不多 补充之前不知道的:链表分两类,带和不带头结点的链表 现在才知道,Java没有像C/C++那样的指针 首先创建一个LinkList类,然后把链表的各个功能添加进去 ...
- 使用TypeConverter类
3.2.2 使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射注意本小节的例子对于初学者来说理解起来比较困难而且实用性不大,主要是为喜欢刨根问底的WPF ...
- Maven无法导入插件,pom文件报错
最近在使用IDEA导入开源项目bootshiro,更新依赖的时候,发现有些插件无法导入,以致于pom文件一直报找不到该插件的错误 一开始就网上各种百度,无论怎么更换阿里云的镜像都导不进,最后想着试试自 ...
- MySQL-库表操作详述
一.库操作 创建库 create database 库名(charset utf8 对库的编码进行设置,不写就用默认值) 库名可以由字母.数字.下划线.特殊字符,要区分大小写,唯一性,不能使用关键字, ...