项目中数据库表设计原则用到了逻辑删除:数据本身没有被删除,只是将deleted字段设置为1
mybatis-plus在逻辑删除方面的设置如下:
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl//sql打印 global-config: db-config: logic-delete-field: deleted//逻辑删除 logic-delete-value: 1 logic-not-delete-value: 0
在实体中,相关的设置如下:
/** * 逻辑删除 1删除 0 未删除 */ @TableLogic private Integer deleted;
测试过,全局配置和在实体中加入@TableLogic注解,可以二选一,因为在实体中加入太麻烦,所以建议全局配置,实体中可以不写注解,也可以达到逻辑删除的效果
最后:关于deleted在数据库的存储问题,我一直存的类型是tinyint(1) ,这是对的,因为它的选值不是0就是1
今天在用代码生成器的时候,发现生成的实体是Boolean类型的,查询资料后的结论是,tinyint(1)对应Boolean
关键的问题是,我以为这个1是长度,其实不是,tinyint(1)理论上只能存储0和1(实测实际上也可以存其他值),要存其他值可以设置为tinyint(4)
建议:以后将只存储一个数字的字段设置为tinyint(4), 包括逻辑删除,这样在用代码生成器时自动反射为Integer
最后结论:
1. 逻辑删除用mybatis-plus的全局配置即可
2. 只存储一个数字的字段设置为tinyint(4), 包括逻辑删除deleted