zoukankan      html  css  js  c++  java
  • 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   年月日 时分秒,可根据实际情况进行使用
    
    <	&lt;
    <=	&lt;=
    >	&gt;
    >=	&gt;=
    &	&amp;
    '	&apos;
    "	&quot;					
    

    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);
    }
    
    作者:学海无涯519
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    Fedora13下真正能用的源(2015-5-16亲测)
    Shellcoding教程:介绍ASM(译)
    Shellcoding教程:介绍ASM
    ubuntu解决pppoeconf和network-manager冲突时,可能问题的解决方法
    vue_router-link传参
    js_window.postMessage往不同窗口里面发送数据
    iframe_iframe引入其它页面
    css_去掉默认样式
    vue_常用组件install
    js_正则表达式
  • 原文地址:https://www.cnblogs.com/wgx519/p/15273031.html
Copyright © 2011-2022 走看看