MyBatisPlus常用注解@TableField介绍和使用
@TableField(exist = false)
注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错。
否则会报一个如下的异常。 ###Error querying database. Cause:com.mysql.jdbc.exception.jdbc4.MySQLSyntaxErrorException:Unknown column ‘***’ 'in field list’
具体使用如下
实体类下
@Data
@TableName(“join_brand”)
public class JoinBrand{
。。。。
@ApiModelProperty(value = “公司审查情况”)
@TableField(exist = false)
JoinBrandCompanyResp companyResp; }
实体类可分为三种
1、数据表 原则上一对一的实体类
类名上面可以加@TableName(“join_brand”)
如果加之外的需声明不被mybatisplus扫描到 @TableField(exitst = false)
注释@ApiModelProperty(value=“…”)也挺好用的
2、请求实体类
通常要传的参数在二个以上
通常用实体封装一下 命名:相关特征Req
3、响应给前端的值
通常给对象给到前端,或者给集合、分页数据
命名:相关特征Resp
@TableName
操作数据库表时,Mapper接口继承BaseMapper<>,泛型名和数据库表名对应,如果数据表名为t_users,而BaseMapper的泛型为实体类User,导致找不到数据库的表。 实体类使用@TableName注解,value值指定对应的表名。我们推荐规范value值指定对应的表名和实体类的命名保持一致,增加程序的可读性
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
private Long id;
private String name;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
@TableId
MyBatisPlus在实现CRUD默认会将Id作为主键,在插入数据时,使用雪花算法生成Id,如果主键不叫Id则添加功能会失败
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
@TableId
private Long id;
private String name;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
@TableId(value = “uid”) //value指定当前作为主键的字段 @TableId(value = “id”,type = IdType.AUTO) //将当前属性所对应的字段作为主键
另外我们可以全局配置主键生成策略
mybatis-plus: #mybatis-plus日志
global-config: #MyBatisPlus全局配置
db-config: #配置数据库
id-type: auto #统一设置主键策略
- 1
- 2
- 3
- 4
- 5
@TableField
如果实体类的普通属性名,和数据库非主键的字段名不一致; 通常在需求需要往实体类加入与数据库不一致的时候,我们用@TableField去让MyBatisPlus不扫描该字段。
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
@TableId
private Long id;
@TableField("username")
private String name;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
本文使用 文章同步助手 同步