• mybatis-plus 常用API 详解


    今天分享常用API:

    1、排序:

    1. // 组装查询条件
    2. QueryWrapper<User> wrapper = new QueryWrapper<>();
    3. // 按 id, age 字段进行升序
    4. wrapper.orderBy(true, true, "id", "age");
    5. // 实际执行 SQL : SELECT id,name,age,gender FROM user ORDER BY id ASC,age ASC
    6. List<User> users = userMapper.selectList(wrapper);

    一个参数排序,倒序:

    1. LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
    2. queryWrapper.orderByDesc(true,Info::getUpdateTime);

    多参数排序

    lambdaQueryWrapper.orderByAsc(User::getAge).orderByDesc(User::getUserName);
    

    2、不等于 <> 相关的方法如下

    1. // 组装查询条件
    2. QueryWrapper<User> wrapper = new QueryWrapper<>();
    3. // 不等于 <> 语句
    4. wrapper.ne("name", "犬小哈");
    5. // 实际执行 SQL : SELECT id,name,age,gender FROM user WHERE (name <> '犬小哈')
    6. List<User> users = userMapper.selectList(wrapper);

    3、 使用ge(大于等于 >=)和le(小于等于 <=)

    1. LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
    2. queryWrapper.ge(Info::getProcessTime, query.getStartTime());
    3. queryWrapper.le(Info::getProcessTime, query.getEndTime());

    配合日期格式:

    1. @DateTimeFormat(pattern = "yyyy-MM-dd")
    2. @ApiModelProperty(value = "开始时间")
    3. private LocalDateTime startTime;
    4. @DateTimeFormat(pattern = "yyyy-MM-dd")
    5. @ApiModelProperty(value = "结束时间")
    6. private LocalDateTime endTime;

    4、忽略映射字段时可以在实体类属性上加注解:

    1. @TableField(exist = false)//表示该属性不为数据库表字段,有需要使用
    2. private Int age;

    5、聚合查询:sum() 函数

    1. QueryWrapper queryWrapper = new QueryWrapper<>();
    2. queryWrapper.select(" product_year,sum(output)as output");
    3. queryWrapper.eq(StringUtils.isNotEmpty(query.getCity()),"city", query.getCity());
    4. queryWrapper.eq("del_flag", DelFlagEnum.False.getCode());
    5. queryWrapper.in("product_year",yearList);
    6. queryWrapper.groupBy("product_year");
    7. List statisticsList = statisticsMapper.selectList(queryWrapper);

    6、

    1. QueryWrapper<UserInfo > queryWrapper = new QueryWrapper<>();
    2. queryWrapper.select("MAX(count_number) as countNumber")
    3. .lambda()
    4. .eq(UserInfo::getTodayDate,todayDate).
    5. last("LIMIT 1");
    6. UserInfo entity = userInfoMapper.selectOne(queryWrapper );

    注意:count_number 是表结构的某个字段,countNumber是实体类UserInfo中的参数,一定要写对。 

    7、查询最大的某条数据

    1. SELECT
    2. t.id,
    3. t.resource_id as resourceId,
    4. max(t.start_time) as startTime,
    5. t1.name
    6. FROM
    7. depart_info t
    8. LEFT JOIN user_info t1 ON (t1.id = t.resource_id)
    9. where t1.department_id =1 and t.start_time > '2021-12-12'
    10. GROUP BY t.resource_id

    即查询2021-12-12以后开始时间最大的数据。 

    8、查询某几个参数:select 

    1. queryWrapper.select(UserInfo::getId,UserInfo::getName)
    2. queryWrapper.eq(UserInfo::getDelFlag,DelFlagEnum.False.getCode());

    9、看到一篇文章也挺详细的,我就不在重复造轮子了:

    常用API

  • 相关阅读:
    la3_系统调用(上)
    Michael Abrash‘s Graphics Programming Black Book--chapter3综计器
    都说“存算分离”好,分布式数据库为何还要“进一步分离”?
    Curator实现Zookeeper分布式锁
    新工作感悟~辞旧迎新~
    uniapp中使用render.js进行openers、arcgis等地图操作
    .NET周报【11月第2期 2022-11-15】
    DVWA-SQL Injection(SQL注入)
    分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测
    chatGPT帮助开发实战解答问题和反思
  • 原文地址:https://blog.csdn.net/nandao158/article/details/132717037