您的当前位置:首页正文

Hibernate使用注解时的注意问题与mysql的中文乱码问题

2024-11-29 来源:个人技术集锦

(一)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;


显示全文