美文网首页
Spring中@Table设置索引来保证数据的唯一

Spring中@Table设置索引来保证数据的唯一

作者: Slience无言 | 来源:发表于2017-11-13 11:49 被阅读0次

实体中有一些熟悉是唯一的,他们不是主键,可能是手机号也可能是身份证号等,这时候我们就可以通过索引来约束这些数据的唯一性
举例,用户身份证号为唯一的,所以我们可以在实体类中这样写

package cm.demo.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Table(name="c_auth", indexes= {@Index(name="identity_index", columnList="_identity", unique=true)})
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Auth {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="_id", nullable=false, columnDefinition="int comment 'id'")
    private int id;
    
    @OneToOne(targetEntity=User.class)
    @JoinColumn(name="_user_id", columnDefinition="int comment '用户id'", nullable=false)
    private User user;
    
    @Column(name="_realname", columnDefinition="varchar(20) comment '真实姓名'", nullable=false)
    private String realname;
    
    @Column(name="_identity", columnDefinition="varchar(18) comment '身份证号'", nullable=false)
    private String identity;
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="_time", nullable=false)
    private Date time;  //创建时间
    
    public Auth(User user, String realname, String identity, Date time) {
        this.user = user;
        this.realname = realname;
        this.identity = identity;
        this.time = time;
    }
}

其中

@Table(name="c_auth", indexes= {@Index(name="identity_index", columnList="_identity", unique=true)})

indexes部分就是我们设置索引的地方,@Index是一个具体的索引信息,其中name为索引名,columnList对应数据库的属性名,我这里需要把身份证号设为索引故用“_identity”(身份证),unique为true——不能一样:true(很好理解吧)
由此生成的数据表索引部分这样的


image.png

相关文章

  • Spring中@Table设置索引来保证数据的唯一

    实体中有一些熟悉是唯一的,他们不是主键,可能是手机号也可能是身份证号等,这时候我们就可以通过索引来约束这些数据的唯...

  • 数据库

    系统原生 主键能保证当前数据的唯一性 创建表设置主键 : (DDL语句)CREATE TABLE IF NOT E...

  • ConcurrentHashMap总结

    1. 总结:如何保证线程线程安全 CAS操作数据:table数组的取值/设置值、链表的数值操作、sizeCtl修改...

  • 索引

    查看索引 删除索引 数据库查询时间 设置索引 设置复合索引 单独搜索name也很快,但是搜age就不快 设置唯一索...

  • Lua 元表和元方法

    table 作为 Lua 中唯一的数据结构,我们可以利用 table 实现面向对象编程中的类、继承、多重继承等等。...

  • MongDB增删改查 聚合

    自己设置_id,但是必须要保证唯一,如果不唯一,插入数据会报错 db.colname.insert({_id:'v...

  • react项目中遇到的坑

    table表格checkbox全选 模态框中嵌入表格并且设置了rowselection属性,默认设置,未清算的数据...

  • table以及td宽度设置细节

    table中table-layout设置 auto 默认值在此设置下如果没有指定table的宽度,则table会根...

  • mysql先查询后插入方案

    日常,理想的情况下,应该是数据库设计的时候都会增加唯一索引,或者联合索引来保证数据的唯一性; 但是在一些特殊情况下...

  • css table表格

    border-collapse属性 border-spacing属性 这个在table中设置, 是设置table中...

网友评论

      本文标题:Spring中@Table设置索引来保证数据的唯一

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