shardingsphere使用以后,同时使用了mybatis书写sql进行insert,但每次insert语句,都要把主键id写到sql里面,并且其value值置为null才可以,搞不懂什么情况呀
小魔女参考了bing和GPT部分内容调写:
shardingsphere集成mybatis遇到的小坑,其实是因为shardingsphere自带的分片策略,会自动生成主键id,而mybatis在执行insert语句时,会把主键id写到sql里面,但是由于shardingsphere自动生成的id,是不能提前知道的,所以就需要把主键id的value值置为null,这样shardingsphere就可以自动生成主键id了。
INSERT INTO t_order (order_id, user_id, status) VALUES (null, 10, 'INIT');
回答不易,记得采纳呀。
有两种解决方法:
使用数据库自增主键
可以在数据表中定义一个自增主键,让数据库自动生成主键值,这样在使用 MyBatis 进行插入操作时,就不需要手动指定主键值了。
使用 MyBatis 的主键生成策略
可以在 MyBatis 的 Mapper 中使用主键生成策略,让 MyBatis 自动生成主键值,从而避免手动写入主键值的问题。
ShardingSphere 设置id的生成规则没