Spring boot如何设置联合主键
程序员文章站
2022-04-25 07:49:10
...
Spring boot如何设置联合主键
前言
文章主要内容
- 如何设置主键并让其自增长
- 如何设置联合主键
前期准备
创建一个实体类
// An highlighted block
@Entity
public class Choice {
//学生 id
@Id
private String sId;
private int qId;
private Integer status;
public Choice() {
super();
}
public Choice(String sId, int qId, Integer status ) {
this.sId = sId;
this.qId = qId;
this.status = status;
}
public String getsId() {
return sId;
}
public void setsId(String sId) {
this.sId = sId;
}
public int getqId() {
return qId;
}
public void setqId(int qId) {
this.qId = qId;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "Choice{" +
"sId='" + sId + '\'' +
", qId=" + qId +
", status=" + status +
'}';
}
}
注意点
[email protected] 表示这是一个实体类,在运行时,jpa会在数据库中自动创建一个与实体内字段对应的表。
[email protected] 表示主键,显然小编这里的sId为主键。
3.小编这里重写toString是为了拿出数据的时候更方便。
4.实体类必须要有默认的构造函数.。
补充一点
@Id
@GeneratedValue
private String sId;
我们加上 @GeneratedValue就表示sId为一个自增长字段,也就不需要设置set方法了。
如何设置联合主键呢
首先确定你要设置的联合主键,比如小编想把sId和qId设置成一对联合组件。
主要步骤
- 创建一个Choice_Map主键实现类(小编这里采用随意命名法,大佬们别吐槽)Choice_Map.class必须要实现Serializable 这个接口,注意是必须要继承。
public class Choice_Map implements Serializable {
private String sId;
private int qId;
public Choice_Map(){
}
public Choice_Map(String sId,int qId){
this.qId =qId;
this.sId =sId;
}
public String getsId() {
return sId;
}
public void setsId(String sId) {
this.sId = sId;
}
public int getqId() {
return qId;
}
public void setqId(int qId) {
this.qId = qId;
}
}
按照小编这样写就对了哦!!!!!
2.现在我们再回到Choice这个类,要做一点点修改
修改点
- 增加了@IdClass(Choice_Map.class),这里就是我们刚才创建的Choice_Map要写入的地方。
- 在qId上面加入@Id这样联合组件就算创建好了
// An highlighted block
@Entity
@IdClass(Choice_Map.class)
public class Choice {
//学生 id
@Id
private String sId;
@Id
private int qId;
private Integer status;
public Choice() {
super();
}
public Choice(String sId, int qId, Integer status ) {
this.sId = sId;
this.qId = qId;
this.status = status;
}
public String getsId() {
return sId;
}
public void setsId(String sId) {
this.sId = sId;
}
public int getqId() {
return qId;
}
public void setqId(int qId) {
this.qId = qId;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "Choice{" +
"sId='" + sId + '\'' +
", qId=" + qId +
", status=" + status +
'}';
}
}
超级无敌重要的地方
1.咋们Choice与Choice_Map中要设置联合主键类型一定要一致,否则无法运行成功。。。。。。。
谢谢大家支持我这个苦逼自学的大学生。
上一篇: Spring Boot JPA 使用以及设置多个主键
下一篇: Couldn't create directory for SharedPreferences file /data/data/XXXX/xxx.xml错误处理
推荐阅读
-
SpringBoot 源码解析 (七)----- Spring Boot的核心能力 - SpringBoot如何实现SpringMvc的?
-
sql中设置联合主键的具体方法
-
Spring Boot2 系列教程(一) | 如何使用 IDEA 构建 Spring Boot 工程
-
如何在Spring Boot中使用Quartz
-
spring boot 中设置默认网页的方法
-
Spring Boot 2.0 设置网站默认首页的实现代码
-
.NET程序员如何快入门Spring Boot
-
Spring boot如何快速的配置多个Redis数据源
-
SQL Server设置联合主键
-
如何在Spring Boot中使用Cookies