在编程中,我们时常会看到有idtype这个词汇出现,那么它到底代表什么意思呢?本文将从多个方面对idtype进行详细的阐述,包括idtype.auto, idtype.none, idtype.assign_id, idType是什么意思以及type是什么意思。
一、idtype.auto
idtype.auto表示数据库会自动生成一个唯一的ID,通常用于自增长的主键。例如,在MySQL中:
CREATE TABLE `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
在这里,idtype.auto就表示自增长的主键id。在增加数据时,不需要手动指定id值,系统会自动的帮我们指定。
此外,在hibernate中,也有类似的实现方式:
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long id;
其中,@GeneratedValue(strategy=GenerationType.AUTO)表示使用默认的自增长策略。
二、idtype.none
idtype.none表示不需要使用ID,一般在表中存在联合主键或者使用其他方式的唯一标识时,可以选择使用idtype.none。例如,在hibernate中,我们可以这样定义一个没有主键的实体:
@Entity @Table(name = "user", indexes = { @Index(columnList = "username", unique = true, name = "username_index")}) public class User { @Column(name = "username", length = 128) private String username; @Column(name = "password", length = 128) private String password; /* getter and setter */ }
在这里,username就是唯一标识,因此可以选择使用idtype.none。
三、idtype.assign_id
idtype.assign_id表示需要手动指定ID,一般用于在做数据导入时或数据需要手动调整时。例如:
CREATE TABLE `user` ( `id` INT(11) NOT NULL, `name` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
在这里,idtype.assign_id就表示需要手动给id赋值:
INSERT INTO `user` (`id`, `name`) VALUES (1, '张三'); INSERT INTO `user` (`id`, `name`) VALUES (2, '李四'); INSERT INTO `user` (`id`, `name`) VALUES (3, '王五');
如果在导入数据的时候省略了id,则会报错。
四、idType是什么意思
idType指的是id的类型,通常是long或者String类型。在Hibernate中,可以这样定义一个long类型的id:
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long id;
在这里,idType就是Long。
五、type是什么意思
type表示将Java类型映射成数据库中的类型。Hibernate中常用的类型有:
- IntegerType
- LongType
- StringType
- DateType
- TimeType
- TimestampType
- DoubleType
- FloatType
- BooleanType
- ByteArrayType
例如:
@Entity @Table(name="person") public class Person { @Id @GeneratedValue @Column(name="id") private Long id; @Column(name="name", nullable=false, length=50) private String name; //省略getter和setter方法 }
在这里,我们将Java中的String类型映射成了数据库中的VARCHAR类型。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/284573.html