bug记录
发表于:2024-06-30 |
字数统计: 651 | 阅读时长: 2分钟 | 阅读量:

bug记录

达梦与mbplus

问题1:分页失效

问题描述:在新模块中正常引入达梦与mbplus,mbplus自带的page方法分页无效。无其他报错信息,返回对象正常,但是对象属性异常,total与size以及current等分页必备的属性异常,导致的分页无效。控制台无报错提示,无警告。

问题原因:使用达梦,没有指定数据库方言的类型。mbplus支持的数据库中包含达梦,因此简单的配置就可以解决。

解决方法:

在 Spring Boot 项目中,通过 Java 配置来添加分页插件:

@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {

    /**
     * 添加分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
        return interceptor;
    }
}
属性名 类型 默认值 描述
overflow boolean false 溢出总页数后是否进行处理
maxLimit Long 单页分页条数限制
dbType DbType 数据库类型
dialect IDialect 方言实现类

备注:

官方介绍中,建议单一数据库类型的均设置dbType。

分页插件置后的原因:分页插件需要count sql,因此在执行链最后面才能保证准确性。

问题2:插入失败,无效的列

问题描述:使用达梦数据库时,编写crud代码,但是使用save时插入失效,控制台报错提示无效的列,针对双引号进行反复测试,均无法解决,数据库采用大小写不敏感,自定义sql方法可行。

问题原因:目前暂定为字段转义,数据库采用大小写不敏感,因此在实体类中去掉所有字段的转义,可实现正常插入。(搜索引擎提到的原因包含:版本不适配与mbplus生成的sql包含换行符,达梦无法正确识别等原因)

解决方法:临时解决方法,覆盖或者重写一个save方法。可能的方案,根据数据库的大小写敏感,处理好转义的关系。

备注:转义问题,除却插入之外的查询更新与删除均能正常运行,插入失效,因此一开始将问题放在mb与达梦本身上,在测试插入时,因此实体字段较多,因此只测试插入一个字段的情况,对于双引号转义也只是处理了一个字段,结果均为无效的列。

下一篇:
Git笔记