通用Mapper的四个常见注解

12 篇文章 0 订阅
7 篇文章 0 订阅

四个常见注解

1、@Table

作用:建立实体类数据库表之间的对应关系。

默认规则:实体类类名首字母小写作为表名,如 Employee -> employee 表

用法:在 @Table 注解的 name 属性中指定目标数据库的表名;

案例:

2、@Column

作用:建立实体类字段数据库表字段之间的对应关系

默认规则:实体类字段,驼峰式命名,数据库表字段,使用"_" 区分各个单词;

用法:在 @Column 注解的 name 属性中指定目标字段的字段名

案例:

3、@Id

通用 Mapper 在执行 xxxByPrimaryKey(key) 方法时,有两种情况:

情况 1:没有使用 @Id 注解明确指定主键字段
SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp 
WHERE emp_id = ? AND emp_name = ? AND emp_salary = ? AND emp_age = ?

之所以会生成上面的 where 子句是因为通用 Mapper 将实体类的所有字段都拿来放在一起作为联合主键。

情况 2:使用@Id 注解明确标记和数据库表中主键字段对应的实体类字段

如:

SELECT emp_id,emp_name,emp_salary,emp_age FROM tabple_emp WHERE emp_id = ?

注意:如果是多个字段作为联合主键,需要在每个字段上面都加上 @Id 注解。

4、@GeneratedValue

作用:让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中。

自增主键用法(MySQL):

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer empId;

序列主键用法(Oracle)

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator="select SEQ_ID.nextval from dual")
private Integer empId;

5、@Transient

一般实体类中字段和数据库表中字段一一对应的,但是也有很多情况会在实体类中增加一些额外的属性,这种情况,需要使用@Transient 注解告诉通用 Mapper 这不是表中的字段

对于类中复杂对象,以及 Map、List 等属性不需要配置这个注解

配置实例:

@Transient
private String otherThings; //非数据库字段

 


 

代码举例 

import lombok.Data;

import javax.persistence.Id;
import javax.persistence.Table;

@Data
@Table(name = "user")
public class User {

    @Id
    private Integer id;
    private String name;
    private Integer age;
}

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小天博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值