demo包里的Info类(数据库中表的映射)

@Data
@NoArgsConstructor
@Table(name = "info") //对应数据库表的映射
@Entity //表明这是一个实体类
public class Info {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String password;
    private Integer status;
    private Date createtime; //全小写就和数据库保持一致,如果驼峰命名在数据库中用_分开(还是全小写)
    private Date uptime;

    //这个构造器用于前端的输入(只输入name和password)
    public Info(String name, String password) {
        this.name = name;
        this.password = password;
    }
}

 

 在这里学习到的知识点:

1. @Table:当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明(比如表名是info,但该类是Info,就需要用@Table进行映射),即使表名一致也建议使用。

2. @Entity:与@Table配合使用,表明这个类是一个实体类(实体类是用于对必须存储的信息和相关行为建模的类,作用一般是和数据表做映射),由于是实体类,要有getter and setter方法,因此加上@Data注解。

3. @Id:标注用于声明一个实体类的属性映射为数据库的主键。   @GeneratedValue:用于标注主键的生成策略,通过strategy 属性指定。  IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式;  AUTO: JPA自动选择合适的策略,是默认选项;   SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式    TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

4. 数据库属性名与Java中属性名的对照:如果Java中的属性名全小写,那么数据库的属性名也应该全小写(比如 uptime 与 uptime),但如果Java中的属性名使用驼峰命名法,那么数据库的属性名就应该在大写字母处加上 _ ,然后还是全小写(比如 upTime 和 up_time),因此建议全小写。

5. 数据库在 application.yml 中的配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test  // test是数据库名,前面是链接
    username: root
    password: shang
    driver-class-name: com.mysql.cj.jdbc.Driver  //驱动名,高版本mysql记得要加上 .cj

 

posted @ 2021-11-25 15:46  Acc22222222  阅读(147)  评论(0)    收藏  举报