一、@TableName
1.若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?
我们将表user更名为t_user,测试查询功能就报错
结果:
2.方法一
在实体类类型上添加@TableName("t_user"),标识实体类对应的表,即可成功执行SQL语句
3.方法二
在yml文件中进行配置将其成为默认,全局配置
二、 @TableId注解
引入
MyBatis-Plus在实现CRUD时,会默认将id作为主键列,并在插入数据时,默认 基于雪花算法的策略生成id
问题
若实体类和表中表示主键的不是id,而是其他字段,例如uid,MyBatis-Plus会自动识别uid为主 键列吗?
结果
解决方法
三、雪花算法生成id,使用自增属性
mybatis-plus的使用生成的id为Long类型的,并且生成的都是随机的id,id是根据雪花算法随机生成的数字
方法一:yml形式
yml配置
方法二:注解形式
前提条件,在数据库中的表必须设置自定递增的属性,否则会报错
@TableName("t_user")
public class User {
//将属性所对应的字段指定为主键,设置数据库与之对应
//@tableID注解的value属性用于指定主键的字段,字段与字段之间的不同
//mybatis默认用雪花算法的方式进行生成id
//如何设置自动递增的策略
//@TableId(VALUE):字符对应
//@TableId(type);自动递增,前提条件,设置自增
@TableId(value = "uid", type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
总结:
- 注解的方式更有利于我们开发的便捷
- @TableName和@TableId的注解解决了80%的问题
- mybatis-plus升级并且简化的开发