在ServiceImpl上加上注解
@Transactional 应该可以
谢谢分享不错不错
看这样,主键应该是没加上自增,你可以先把外键去掉,然后把user表的id加上自增,然后再设置上外键。
你用最新版本的MP试试,看看有没有这个问题。
可以在表示主键的属性上增加@TableId注解,mp就会知道该属性对应的字段为主键。有默认(或设置的)的映射规则,你也可以在@TableId中指定对应字段的名称。如果是默认的映射规则,你的主键名称就叫id,实体类中的属性名也叫id,那么可以不加此注解,mp默认认为字段名为id的是主键。
使用maven构建项目,无论是idea还是eclipse都能在配置中设置下载源码。如果配置了下载源码,你才能在源码中看到注释。
你得使用userService.lambdaQuery(),而不是userService.query(),前者才可以使用lambda的形式。
有的项目由于适用场景或其他的原因,不采取依赖数据库的自增主键,就得采取其他主键策略,这时MP给你提供的多种主键策略就可能派上用场了。
Mysql支持主键自增,主键自增是依赖于数据库的机制,所以数据库中也要进行设置。有些数据库没有自增的主键,例如oracle,如果要实现主键自增依赖于sequence序列。
雪花算法是MP默认的主键策略,是通过Java程序生成的自增主键,不依赖于数据库。如果想使用数据库的自增,除了在MP中将主键策略设为自增,还要在数据库中进行设置。
有个办法,使用MP的自动填充功能,你要填充的实体类属性上增加@TableField注解,注解中fill属性,设置填充的类型。然后在自己重写的继承MetaObjectHandler的类中,编写字段填充逻辑。在自动填充逻辑中,就可以调用雪花算法的类生成数字串的方法,然后填充进你要填充的字段。自动填充功能可以参考官方文档,地址:https://mybatis.plus/guide/auto-fill-metainfo.html