怎样做网站管理,中国建设银行幼儿缴费官网站,深圳市门户网站建设怎么样,有没有推广app的平台目录 一、TableName
二、TableId
三、TableField
四、TableLogic 一、TableName 在使用MyBatis-Plus实现基本的CRUD时#xff0c;我们并没有指定要操作的表#xff0c;只是在Mapper接口继承BaseMapper时#xff0c;设置了泛型User#xff0c;而操作的表为user表 由此得出…目录 一、TableName
二、TableId
三、TableField
四、TableLogic 一、TableName 在使用MyBatis-Plus实现基本的CRUD时我们并没有指定要操作的表只是在Mapper接口继承BaseMapper时设置了泛型User而操作的表为user表 由此得出结论MyBatis-Plus在确定操作的表时由BaseMapper的泛型决定即实体类型决定且默认操作的表名和实体类型的类名一致。 若实体类类型的类名和要操作的表的表名不一致会出现什么问题 将表user更名为t_user测试查询功能。 程序抛出异常Table mybatis_plus.userdoesnt exist因为现在的表名为t_user而默认操作的表名和实体类型的类名一致即user表。 在实体类类型上添加TableName(t_user)标识实体类对应的表即可成功执行SQL语句。 在开发的过程中我们经常遇到以上的问题即实体类所对应的表都有固定的前缀例如t_或tbl_ 此时可以使用MyBatis-Plus提供的全局配置为实体类所对应的表名设置默认的前缀那么就不需要在每个实体类上通过TableName标识实体类对应的表
mybatis-plus:configuration:# 配置MyBatis日志log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:# 配置MyBatis-Plus操作表的默认前缀table-prefix: t_
二、TableId MyBatis-Plus在实现CRUD时会默认将id作为主键列并在插入数据时默认基于雪花算法的策略生成id。 若实体类和表中表示主键的不是id而是其他字段例如uidMyBatis-Plus会自动识别uid为主键列吗 实体类中的属性id改为uid将表中的字段id也改为uid测试添加功能。 程序抛出异常Field uiddoesnt have a default value说明MyBatis-Plus没有将uid作为主键赋值。 在实体类中uid属性上通过TableId将其标识为主键即可成功执行SQL语句。 TableId的value属性 若实体类中主键对应的属性为id而表中表示主键的字段为uid此时若只在属性id上添加注解TableId则抛出异常Unknown columnidinfield list即MyBatis-Plus仍然会将id作为表的 主键操作而表中表示主键的是字段uid。 此时需要通过TableId注解的value属性指定表中的主键字段TableId(uid)或TableId(valueuid)。 TableId的type属性 type属性用来定义主键策略。 配置全局主键策略
mybatis-plus:configuration:# 配置MyBatis日志log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:# 配置MyBatis-Plus操作表的默认前缀table-prefix: t_# 配置MyBatis-Plus的主键策略id-type: auto 常用的主键策略 值 描述 IdType.ASSIGN_ID 默 认 基于雪花算法的策略生成数据id与数据库id是否设置自增无关 IdType.AUTO 使用数据库的自增策略注意该类型请确保数据库设置了id自增 否则无效
三、TableField 经过以上的测试我们可以发现MyBatis-Plus在执行SQL语句时要保证实体类中的属性名和 表中的字段名一致 如果实体类中的属性名和字段名不一致的情况会出现什么问题呢 情况1 若实体类中的属性使用的是驼峰命名风格而表中的字段使用的是下划线命名风格 例如实体类属性userName表中字段user_name 此时MyBatis-Plus会自动将下划线命名风格转化为驼峰命名风格 相当于在MyBatis中配置 情况2 若实体类中的属性和表中的字段不满足情况1 例如实体类属性name 表中字段username 此时需要在实体类属性上使用TableField(username)设置属性所对应的字段名 四、TableLogic 该注解用于表示逻辑删除。 逻辑删除 物理删除真实删除将对应数据从数据库中删除之后查询不到此条被删除的数据 逻辑删除假删除将对应数据中代表是否被删除字段的状态修改为“被删除状态”之后在数据库中仍旧能看到此条数据记录 使用场景可以进行数据恢复 实现逻辑删除 step1 数据库中创建逻辑删除状态列设置默认值为0 step2 实体类中添加逻辑删除属性 step3 测试 测试删除功能真正执行的是修改 UPDATE t_user SET is_deleted1 WHERE id? AND is_deleted0 测试查询功能被逻辑删除的数据默认不会被查询 SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted0