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

浙公网安备 33010602011771号