MyBatis-plus数据库字段排序

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

MyBatis-plus数据库字段排序

itfallrain   2022-05-23 我要评论

MyBatis-plus数据库字段排序不准确

今天用mybatis-plus进行开发的时候遇到一个问题,就是用mysql自带的排序进行数据排序的时候,发现排序的数据不准确。

例如:12还没有8,4,2大,这就很郁闷了

在这里插入图片描述

后来在网上查了一下,原来是自己给自己挖的坑,数据库排序字段用的是varcher类型,而排序函数针对的是number类型。

在这里插入图片描述

解决方案

对于mysql和oracle都实用

  • order by 字段+0
  • order by 字段*1

在这里插入图片描述

在这里插入图片描述

因为用的是mybatis-plus,不想写sql怎么办呢?那就用自带的排序函数喽。排序字段直接"+1"就Ok了

	//倒叙
	 queryWrapper.orderByDesc("visit_num+1");

Mybatis-plus遇到的坑

1. 数据库映射枚举

不能是tinyint(1),tinyint(1)默认是boolean类型

2. 自增主键

数据库设置了自增主键后,po类需要增加@TableId(type = IdType.AUTO),或者不要id字段才能生效。

在这里插入图片描述

否则会自动分配id,如下图:

在这里插入图片描述

3. mybatis嵌套查询

子查询中需要查出唯一标识

在这里插入图片描述

4. 用updateWrapper的update做更新操作

更新时间没有更新问题

数据库updateTime设置了 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,仍然不会自动更新时间,需要手动设置当前时间,或者用updateById方法

5. 使用lambaQuery时

参数为空会带入到SQL中(branch_code = null),需要手动过滤,或者在eq中增加条件

在这里插入图片描述

6. Integer判断为空

在这里插入图片描述

7. 基础类型的判断

customerIssueFlag定义的是String类型,值是Y or N

在这里插入图片描述

在这里插入图片描述

8. 事务

在这里插入图片描述

在这里插入图片描述

9. mybatis 配置了多个数据库

除了主数据源对应的mapper.java,都不能加 @Mapper 注解,否则会报找不到

由于使用了mybatis-plus的包,默认自动全包扫描@Mapper注解。mybatis扫描生成的Mapper比其他自定义配置的bean生成对应的Mapper对象块,而自定义的mybatis@MapperScan后扫描,Dao Bean已经生成了,无法再指定数据源进行注入了。

所以如果在 @Configrution注解类中指定了扫描类,就不用再加 @Mapper注解了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们