1.先构建类
1.Blog类
package com.lrm.blog.po;
import javax.persistence.*;
import java.util.Date;
@Entity //使用此注解才能拥有生成数据库表的能力
@Table(name = "t_blog")//指定数据表的名字
public class Blog {
@Id //指定id
@GeneratedValue //自动生成
private Long id;
private String title;
private String content;
private String firstPicture;
// flag表示“标记”
private String flag;
private Integer views;
// 赞赏是否开启
private boolean appreciation;
// shareStatement表示转载声明是否开启
private boolean shareStatement;
// 评论
private boolean commentabled;
//发布
private boolean published;
//推荐
private boolean recommend;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;
public Blog() {
}
。。。
2.Type类
package com.lrm.blog.po;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_type")
public class Type {
@Id
@GeneratedValue
private Long id;
private String name;
public Type() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public String toString() {
return "Type{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
3.Tag类
package com.lrm.blog.po;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_tag")
public class Tag {
@Id
@GeneratedValue
private Long id;
private String name;
public Tag() {
}
4.Comment类
package com.lrm.blog.po;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name="t_comment")
public class Comment {
@Id
@GeneratedValue
private Long id;
private String nickname;
private String email;
private String content;
private String avatar;
//想要在在数据库中生成对应的生成时间需要加此注解
// 括号内的内容为时间的类型(日期加时间)
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
public Comment() {
}
5.User类
package com.lrm.blog.po;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue
private Long id;
private String nickname;
private String username;
private String password;
private String email;
private String avatar;
private Integer type;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updatTime;
public User() {
}
2.处理实体类与实体类之间的关系
处理的原则:“多”的一端作为关系维护端,“一”的一端作为关系被维护端
例如:Blog类和Type类,一个Type类对应多个Blog类,一个Blog类对应Type类,所以Blog类与Type类的关系为一对多。
“多”的一端作为关系维护端,“一”的一端作为关系被维护端
*在Blog类中
// 关系维护端
@ManyToOne//主要维护
private Type type;
*在Type类中
// 关系被维护端
@OneToMany(mappedBy = "type")//关系被维护
private List<Blog>blogs = new ArrayList<>();
然后分别setter and getter ;
3.级联关系----当新增一个新的Blog的时候同时新增一个tag,新增的tag会存进数据库
// 级联新增
@ManyToMany(cascade = {CascadeType.PERSIST})
private List<Tag>tags = new ArrayList<>();
3.评论类的自关联关系
// 一个父类评论可以有多个子类评论(关系被维护方)
@OneToMany(mappedBy = "parentComment")
private List<Comment> replyCommens = new ArrayList<>();
// 一个子类评论只有有一个父类评论(关系维护方)
@ManyToOne
private Comment parentComment;
然后setter and getter