美文网首页
MyBatisPlus常用注解@TableField介绍和使用

MyBatisPlus常用注解@TableField介绍和使用

作者: 学习微站 | 来源:发表于2022-11-25 11:33 被阅读0次

    @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
    文章知识点与官方知识档案匹配,可进一步学习相关知识

    本文使用 文章同步助手 同步

    相关文章

      网友评论

          本文标题:MyBatisPlus常用注解@TableField介绍和使用

          本文链接:https://www.haomeiwen.com/subject/uzwqtdtx.html