• 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

  • 相关阅读:
    【ICCV Oral】SAN:利用软对比学习和全能分类器提升新类发现,FaceChain团队联合出品
    信息熵原理与Python实现
    房产销售数据分析与可视化的设计与实现
    拓扑排序:acwing 848. 有向图的拓扑序列
    Spring Cloud微服务治理框架深度解析
    ElasticSerach基础语法
    21.cuBLAS开发指南中文版--cuBLAS中的Level-2函数sbmv()
    UI 学习 二 可访问性 模式
    Arduino 控制理论(3)- 如何在 Arduino 中调节 PID 控制器
    Vite 是否可以代替 Webpack ?
  • 原文地址:https://blog.csdn.net/nandao158/article/details/132717037