(一)Hibernate注解的实现是使用的JPA标准,是导入import javax.persistence类库的,而不是hibernate的
(二)表名不一致:可以采用@Table(name=“数据库中的表名”)
(三)字段名不一致:在属性的getter方法上加@Column(name=“数据库中字段的名字”)
(四)不想让属性存储到数据库,可以在属性的getter方法加上@Transient
如果使用xml配置,在Teacher.hbm.xml中不写该属性即可。
(五)对于Date数据库默认是日期和时间都有,对于日期的设置,在属性的getter方法上加@Temporal(TemporalType.DATE) 其中TemporalType的属性有:Date:只是日期 time:时间 timeStamp:日期和时间
在xml中配置,用type属性来配置属性值与注解一样
(六)对于枚举类型的转换,使用xml配置非常麻烦,建议使用注解方式:@Enumerated(EnumType.STRING)以varchar的形式存储,@Enumerated(EnumType.ORDINAL)以integer的形式存储。
(七)mysql出现中文乱码问题:(编码不一致导致)
(1).创建数据库的时候数据编码设置错误
create database 数据库名 character set utf8 collate utf8_general_ci ;
或者
create database 数据库名 default character set utf8 collate utf8_general_ci ;
或者
create database 数据库名 character set utf8 ;
(2).连接数据库的时候数据编码设置错误:在xml配置文件中的属性配置:
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8
在xml配置文件中,url中的&符号需要进行转义,&的转义字符为& 注意不要漏掉后面的分好
(3).创建表的时候数据编码设置错误
create table 表名 (id int primary key ,name varchar(20),birthday date )charset utf8;
或者
create table 表名 (id int primary key ,name varchar(20),birthday date )character set utf8;
其中:utf8不区分大小写,可以省略中间的横线。亲测在建数据库或者表时,指定编码其中utf-8,加横线会报错。
所以直接可以使用小写的utf8即可。
修改数据库或者表的字符编码:
alter database 数据库名 character set utf8;
alter table 表名 character set utf8;