第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > mysql 枚举类型 映射_model类中enum类型与数据库字段的映射

mysql 枚举类型 映射_model类中enum类型与数据库字段的映射

时间:2020-04-07 19:52:26

相关推荐

mysql 枚举类型 映射_model类中enum类型与数据库字段的映射

这个东西搞了好久,不难,但小细节没注意到一直不对,现在终于做出来了,赶紧记下。

下面是实体类User与对应的表user之间的映射:

1. 准备数据库表user

SET NAMES utf8;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for `user`

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) NOT NULL,

`gender` int(3) NOT NULL,

`level` int(1) NOT NULL,

`birth` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`is_locked` bit(1) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of `user`

-- ----------------------------

BEGIN;

INSERT INTO `user` VALUES ('1', 'c1', '1', '0', '-02-28 10:44:34', b'0');

COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

2. model类User

package pr.cgl.model;

import javax.persistence.*;

/**

* Created by LL on 16/1/25.

*/

@Entity

@Table(name = "user")

public class User {

private Integer id;

private String name;

private Boolean isLocked;

public enum Gender{

MALE,

FEMALE

}

public enum Level{

cardMember, // 0

goldCardMember, // 1

platinumCardMember, // 2

}

private Gender gender;

private Level level;

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

@Column(name = "name")

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Column(name = "is_locked")

public Boolean getIsLocked() {

return isLocked;

}

public void setIsLocked(Boolean isLocked) {

this.isLocked = isLocked;

}

@Column(name = "gender")

public Gender getGender() {

return gender;

}

public void setGender(Gender gender) {

this.gender = gender;

}

@Column(name="level")

public Level getLevel() {

return level;

}

public void setLevel(Level level) {

this.level = level;

}

}

3. 测试类

package pr.cgl.test;

import pr.cgl.model.User;

import pr.cgl.util.EntityUtil;

import javax.persistence.EntityManager;

import javax.persistence.Query;

import java.util.List;

/**

* Created by LL on 16/1/25.

*/

public class EnumTest {

public static void main(String[] args) {

EntityManager em = EntityUtil.em;

String jql = " FROM User u";

Query query = em.createQuery(jql);

List userList = query.getResultList();

for(User u: userList){

System.out.println("id="+u.getId()+" name="+u.getName()+" is_locked="+u.getIsLocked()+" gender="+u.getGender()+" level="+u.getLevel());

}

}

}

4. 输出结果

Hibernate: select user0_.id as id0_, user0_.gender as gender0_, user0_.is_locked as is3_0_, user0_.level as level0_, user0_.name as name0_ from user user0_

id=1 name=c1 is_locked=false gender=FEMALE level=cardMember

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。