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

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

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

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

MyBatis-plus数据库字段排序不准确的解决_第1张图片

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

在这里插入图片描述

解决方案

对于mysql和oracle都实用

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

MyBatis-plus数据库字段排序不准确的解决_第2张图片

MyBatis-plus数据库字段排序不准确的解决_第3张图片

因为用的是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嵌套查询

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

MyBatis-plus数据库字段排序不准确的解决_第4张图片

4. 用updateWrapper的update做更新操作

更新时间没有更新问题

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

5. 使用lambaQuery时

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

在这里插入图片描述

6. Integer判断为空

MyBatis-plus数据库字段排序不准确的解决_第5张图片

7. 基础类型的判断

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

MyBatis-plus数据库字段排序不准确的解决_第6张图片

在这里插入图片描述

8. 事务

MyBatis-plus数据库字段排序不准确的解决_第7张图片

MyBatis-plus数据库字段排序不准确的解决_第8张图片

9. mybatis 配置了多个数据库

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

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

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

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

你可能感兴趣的:(MyBatis-plus数据库字段排序不准确的解决)