c语言编程笔录

首页 >   > 笔记大全

笔记大全

Mybatisplus出现数据库id很大或为负数问题怎么解决

更新时间:2023-10-05
问题描述: 当使用MyBatis-Plus进行数据库操作的时候,有可能会出现数据库id很大或为负数的问题。这种情况下,我们需要找到问题的原因并解决它,以确保代码的质量和稳定性。 问题原因: 造成数据库id很大或为负数的问题通常有两种原因: 1. 数据库id类型不匹配导致的问题。例如,在MySQL数据库中,如果将一个自增长的int类型的主键赋值为一个超出int范围的值,该主键会变为负数。而在MyBatis-Plus中,它会将这个负数主键当作错误来处理。 2. MyBatis-Plus自动填充插件导致的问题。当使用MyBatis-Plus自动填充插件时,它会在插入或更新数据之前自动填充一些非空字段,其中就包括ID字段。如果ID字段的值不合法,就可能会导致数据库id很大或为负数的问题。 解决方法: 1. 把数据库id类型改为Long类型,保证数据库id不会出现负数。 ```java @Data @TableName("my_table") public class MyTableEntity implements Serializable{ /** * 主键ID */ private Long id; /** * 名称 */ private String name; //其他字段省略... } ``` 2. 关闭MyBatis-Plus自动填充插件或者修改自动填充插件的填充方法。 ```java /** * 自定义Mybatis-Plus的插件类 */ @Configuration @MapperScan("com.xxx.xxx.dao") public class MyBatisPlusConfig { @Bean public SqlInjector sqlInjector() { return new DefaultSqlInjector() { @Override public List getMethodList(Class<?> mapperClass) { List methodList = super.getMethodList(mapperClass); // 移除Mybatis-Plus的所有填充器: methodList.removeIf(method -> (method instanceof AbstractSqlMethod)); return methodList; } }; } } ``` 总结: MyBatis Plus提供了一种方便快捷的方式来操作数据库,但有时也会遇到问题。本文提到了两种可能导致数据库id很大或为负数的原因,并给出了解决方案。我们需要在使用MyBatis-Plus时,注意数据类型匹配以及MyBatis-Plus的自动填充插件是否会干扰数据的插入。只有这样,才能保证程序的稳定性和正确性。