# 方式1
# 如果实体类名称为User,与表名t_user不一致时
# 使用如下方式指定表名
@TableName("t_user")
# 方式2
# 当实体类名称为User,表名称为t_user
# 在application.yml中配置如下
mybatis-plus:
# 设置MyBatis-Plus的全局配置
global-config:
db-config:
# 设置实体类所对应的表的统一前缀
table-prefix: t_
# 在主键id上添加如下注解,表明该属性对应表中的主键
@TableId
private Long id;
# 当实体类中的主键字段与数据库表中的主键id名称不一致时,可以指定value属性
@TableId("uid")
private Long id;
# 查看该注解的type属性,默认为none
# 不指定时为none,mybatis plus使用雪花算法
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface TableId {
String value() default "";
IdType type() default IdType.NONE;
}
# 其他值如下
public enum IdType {
AUTO(0),
NONE(1),
INPUT(2),
ASSIGN_ID(3),
ASSIGN_UUID(4);
private final int key;
private IdType(int key) {
this.key = key;
}
public int getKey() {
return this.key;
}
}
# 方式1
# 如果想设置为主键自增,需设置为如下,同时数据库表的主键也设置为自增
@TableId(value = "uid", type = IdType.AUTO)
# 方式2
# 数据库表中主键设置为自增
# 实体类中主键字段不指定type属性
@TableId("uid")
private Long id;
# application.yml中配置如下
mybatis-plus:
# 设置MyBatis-Plus的全局配置
global-config:
db-config:
# 设置统一的主键生成策略
id-type: auto
# 数据库表中主键设置为自增
# 实体类中主键字段不指定type属性
@TableId("uid")
private Long id;
# application.yml中不配置主键生成策略
# 执行添加业务的代码时,同时指定id,这时插入到数据库的id是自己指定的id
# 情况1
# 实体类属性userName,表中字段user_name
# 时MyBatis-Plus会自动将下划线命名风格转化为驼峰命名风格
# 情况2
# 实体类属性name,表中字段username
# 需要在实体类属性上使用@TableField("username")设置属性所对应的字段名
@TableField(value = "xxx",fill = FieldFill.UPDATE)
# 数据库中新增1个字段deleted,设置默认值为0
# 实体类中添加属性如下
@TableLogic
private Integer deleted;
# 测试删除功能,真正执行的是修改
UPDATE t_user SET is_deleted=1 WHERE id=? AND is_deleted=0
# 测试查询功能,被逻辑删除的数据默认不会被查询
SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0