Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper

这篇具有很好参考价值的文章主要介绍了Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据 mybatis 根据多字段排序已经wrapper 根据多字段排序

首先根据咱们返回前端的数据列来规划好排序字段
如下:
Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper,mybatis,sql,数据库
这里的字段为返回VO的字段,要转换成数据库字段然后加入到排序中
示例,穿了 surname,cerRank 多字段,然后是倒序 false

Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper,mybatis,sql,数据库
首先创建好映射,如下代码,第一个List 为前端字段VO, 第二个List 为数据库字段。Util.handle 是将两个转换为map,然后就可以做映射啦。下面也写啦handle的方法。

    Map<String,String> SORTCOLUMNMAP =
            Util.handle(Arrays.asList("surname","idcardNum","cerCode","cerType","cerRank","permissionTime","expirationTime"),
                    Arrays.asList("surname","idcard_num","cer_code","cer_type","cer_rank","permission_time","expiration_time"));
    /**
     * 将两个list转换为Map
     * @author ZMH
     * @return Map<String, String>
     */
    public static Map<String, String> handle(List<String> list1, List<String> list2) {
        Map<String, String> map = IntStream.range(0, list1.size())
                .collect(HashMap::new, (m, i) -> m.put(list1.get(i), list2.get(i)), (m, n) -> {
        });
        return map;
    }

到这里之后我们就做一个转换的方法吧,然后这里测试如下,结果为surname,cer_rank 成功的改为了数据库字段,然后就可以加入到wrapper和sql 中啦。

    /**
     * 获取转换后的排序字
     * @author ZMH
     * @date 31/7/2023 2:13 下午
     */
    public static String getColumns (Map<String, String> sortColumnMap,String orderByColumns){
        List<String> orderByColumnList = Arrays.asList(orderByColumns.split(","));
        AtomicInteger i = new AtomicInteger();
        AtomicReference<String> columns = new AtomicReference<>("");
        orderByColumnList.forEach(
                column -> {
                    columns.set(columns.get()+sortColumnMap.get(column));
                    if (i.getAndIncrement() != (orderByColumnList.size()-1)) {
                        columns.set(columns.get()+",");
                    }
                });
        return columns.get();
    }

Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper,mybatis,sql,数据库

sql的话大家应该都知道怎么写,就不写sql的啦。写一个wrapper 的列子,如下:文章来源地址https://www.toymoban.com/news/detail-621555.html

        queryCondition(queryWrapper,dto);//查询条件封装的方法都是一些判断
        if (StringUtils.isNotBlank(dto.getOrderByColumns())){
            String order = dto.getOrderByAsc() ? "asc" : "desc";//正序倒序 
            String columns = Util.getColumns(baseMapper.SORTCOLUMNMAP, dto.getOrderByColumns());//获取数据库字段
            queryWrapper.last(" order by ".concat(columns).concat(" ").concat(order));//最后拼接到wrapper 里面就可以来啦.
        }else {
            queryWrapper.orderByDesc(GzhExamCertificate::getCerCode);
        }

到了这里,关于Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis-plus 根据指定字段 批量 删除/修改

    mybatis-plus 提供了根据id批量更新和修改的方法,这个大家都不陌生 但是当表没有id的时候怎么办) 这个就不说了,就是因为不想手写SQL 所以才有这篇博客 mybatis plus 的 executeBatch 参考 mybatis plus 的updateBatchById 方法. 调用处: 接口 重写方法 实现 这种写法其实批量的效率还是比较慢的

    2024年02月13日
    浏览(39)
  • mybatis-plus更新字段为null值

    mybatis-plus相信大家都不陌生所以不在介绍 首先我们先看一下mybatis-plus的官网上的介绍  官网推荐的有三种方式可以实现 第一种:调整全局策略, mybatis-plus默认的全局策略为NOT_NULL非空默认策略,其实就是当更新是某个字段为空,则不对该字段进行更新,这也是我们常用的策略所此种

    2024年02月14日
    浏览(54)
  • Mybatis-Plus处理Mysql Json类型字段

    Mysql 5.7.8开始支持Json对象和Json数组,但在Mysql 8版本中使用Json性能更佳。 使用Json格式的好处: 无须预定义字段:字段可以无限拓展,避免了ALTER ADD COLUMN的操作,使用更加灵活。 处理稀疏字段:避免了稀疏字段的NULL值,避免冗余存储。 支持索引:相比于字符串格式的JSON,

    2024年02月03日
    浏览(51)
  • MyBatis-Plus如何将字段修改为空值

    不推荐使用原因:作用范围太广,调用MyBatis-Plus封装的update会不经意将字段改为空 不推荐使用原因:相对于方案一作用范围相对较小,但调用MyBatis-Plus封装的update也会不经意将字段改为空 推荐原因:不影响任何地方只在此处生效

    2024年02月16日
    浏览(53)
  • Mybatis-plus通过其他字段批量更新或新增

    根据某个或者多个非ID字段进行批量更新 示例通过名称与id两个字段更新 引用mybatis-plus根据某个指定字段批量更新数据库 通过其他字段批量更新或新增

    2024年02月12日
    浏览(49)
  • mybatis-plus 数据字段进行加解密入库,且加密字段支持模糊搜索

    1. 开发框架、环境 springboot+mybatis-plus+mysql5.7(oracle应该也是可以的,没有测试,但实现思路是都可以满足,懒得测oracle了,哈哈) 2. 需求介绍(背景) 需求很简单: 就是将数据存储到数据库,并且将敏感数据字段进行加密处理保存(比如:身份证,手机号,银行卡 等等)

    2024年02月09日
    浏览(52)
  • SpringBoot - MyBatis-Plus - 如何在查询时排除某些字段?

    写在前面 查询时部分字段不想给前端显示,怎么办? (1)使用SELECT方法,排除字段\\\"password\\\" (2)使用SELECT方法,只显示某些字段 (3)使用@TableField(exist = false),排除某些字段 注:表示当前属性不是数据库的字段,但在项目中必须使用,这样的话在新增/查询等使用BEAN时,

    2024年02月12日
    浏览(42)
  • mybatis-plus之排序查询

    一、orderByAsc 排序:ORDER BY 字段, ... ASC 例:  orderByAsc(\\\"id\\\", \\\"name\\\") --- order by id ASC,name ASC #二、orderByDesc 排序:ORDER BY 字段, ... DESC 例:  orderByDesc(\\\"id\\\", \\\"name\\\") --- order by id DESC,name DESC #三、orderBy 排序:ORDER BY 字段, ... 例:  orderBy(true, true, \\\"id\\\", \\\"name\\\") --- order by id ASC,name ASC  倒叙排序  

    2024年02月15日
    浏览(41)
  • spring boot集成mybatis-plus——Mybatis Plus 多表联查(包含分页关联查询,图文讲解)...

     更新时间 2023-01-03 21:41:38 大家好,我是小哈。 本小节中,我们将学习如何通过 Mybatis Plus 实现 多表关联查询 ,以及 分页关联查询 。 本文以 查询用户所下订单 ,来演示 Mybatis Plus 的关联查询,数据库表除了前面小节中已经定义好的用户表外,再额外创建一张订单表,然后

    2024年02月01日
    浏览(89)
  • Mybatis-Plus不能更新对象字段为空值问题解决

    问题描述: 在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况,该如何解决呢? 原因分析: Mybatis-Plus中字段的更新策略是通过FieldStrategy属性控制的。在实体字段上,如果不通

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包