🖥️MyBatis-plus+达梦数据库出现的坑
00 分钟
2024-2-20
2024-3-28
type
status
date
slug
summary
tags
category
icon
password

前情提要

今日,公司的项目使用的是达梦数据库7+jdk1.8+麒麟系统+SpringBoot+Mybatis-plus。走过了很多坑,特此记录,供给同胞们警醒。

问题汇总

Mybatis-plus的支持性

根据官网上的提供,mybatis-plus的generator自动生成器,在3.3.0以上的版本才能支持,所以如果想使用自动生成器的小伙伴,建议使用3.3.0以上的版本。
3.3.0以上的版本对达梦的支持性更强,建议直接使用3.3.0

Mybatis-plus的save&saveBatch

作为超级好用的Mybatis-plus,里面封装了好多方法供开发人员使用。但是有些方法是不兼容达梦数据库的。比如博主现在发现的save和saveBatch方法。所以此处建议使用自己手写的insert的sql来实现。
save和saveBatch方法,经过排查,发现是因为mp的save和saveBatch方法,生成的sql是有换行符的,这个换行符达梦数据库的部分版本是无法解析的。(可能是因为部分配置原因,也可能是因为版本原因。跟mp的研发人员交流说是达梦的问题,询问达梦的支持人员,没有解决,所以不了了之了。)

保存方法返回数据库id

一般在保存的方法的xml中,会加入一下语句,来确保方法会返回id。
但是经过博主验证发现,使用批量插入的sql时,是无法传回id的,原因未知。(同样的版本,同样的方法,在mysql是可以回传的)

保存方法后查询问题

发现了一个问题:在同一个事务中,如果先保存,再根据selectById查询该数据,无法查询出来。
最终经过测试发现,博主的项目使用的是dmjdbc17+达梦7+jdk1.8。发现这个问题是必现的。经过跟达梦的巡视人员沟通,将dmjdbc的版本更新到了18之后,此问题解决。

达梦数据库建表之后再添加TEXT字段

在数据库设计完之后,发现一张表需要加一个大字段,使用如下语句执行后报错
在于达梦的技术人员沟通后,他们解释”在达梦7.15版本之后聚集主键和大字段不能共存,需要修改达梦数据库的配置文件,将默认主键创建为普通主键,即非聚集,修改./data/数据库实例/dm.ini中的参数PK_WITH_CLUSTER改为0即可“。 但是有个问题,生产的库甲方在用着,没法修改配置重启啊。 最后通过查询百度得知方案: 方法1.删了表,然后再重新创建表,建表的时候不会有这样的问题 方法2.建表的时候