@Table Name:
-
概述:
- MyBatis-Plus 在确定操作的表时,由 BaseMapper的泛型决定,即实体类决定,且默认操作的表名和实体类的类名一致
-
问题:
- 如果实体类类型的类名和要操作表的表名不一致会出现什么问题?(把 user 表改成 t_user)
- 答:程序抛出异常,Table 'mybatis_plus,.user' doesn't exist,因为现在的表名 t_user,而默认的表名和实体类型的类名一致,即 user表:
- 答:程序抛出异常,Table 'mybatis_plus,.user' doesn't exist,因为现在的表名 t_user,而默认的表名和实体类型的类名一致,即 user表:
- 如果实体类类型的类名和要操作表的表名不一致会出现什么问题?(把 user 表改成 t_user)
-
通过 @TableName 解决问题:
- 在实体类类型上添加 @TableName("t_user"),表示实体类对应的表,即可成功执行 SQL 语句
- 在实体类类型上添加 @TableName("t_user"),表示实体类对应的表,即可成功执行 SQL 语句
- 通过全局配置解决问题:
- 在开发过程中,我们经常遇到以上问题,即实体类所对应的表都有固定的前缀,例如 t_ 或 tbl_
- 此时,可以使用 MyBatis-Plus 提供的全局配置,为实体类所对应的表名设置默认的前缀,那么就不需要在每个实体类上通过 @TableName 标识实体类对应的表
@TableId:
-
概述:
- 经过以上的测试,MyBatis-Plus 在实现 CURD 时,会默认将 id 作为主键列,并在插入数据时,默认基于雪花算法的策略生成的 id
-
问题:
- 若实体类和表中标识主键的不是 id,而是其他字段,例如 uid,MyBatis-Plus 会自动识别 uid 作为主键列吗ÿ