1.Boolean类型

1.1.使用Boolean类型,而不是Byte类型

1.2.数据库字段名使用is_开头

1.3.实体类字段名不使用is开头

例子

/**

* 是否为新消息

*/

@Column(name = "is_new_message", nullable = false)

private Boolean newMessage;

2.Enum类型

1.使用Convert注解, 并指定coverter类

例子

/**

* 询盘类型

*/

@Column(name = "type", nullable = false)

@Convert(converter = Type.Convert.class)

private Type type;

2.枚举类型的规范

2.1. 枚举类需要实现EntityEnum接口

2.2. 在枚举类内部定义转换类, 并实现EntityEnumConverter抽象类

例子

public enum Type implements EntityEnum {

/**

* FRQ询盘

*/

RFQ(1),

/**

* 询盘

*/

PRODUCT_INQUIRY(2),

/**

* 私人展会询盘

*/

PRIVATE_PRODUCT_INQUIRY(3),

/**

* 供应商询盘

*/

SUPPLIER_INQUIRY(4);

private Integer code;

Type(Integer code) {

this.code = code;

}

public Integer getCode() {

return this.code;

}

@Converter

public static class Convert extends EntityEnumConverter {

}

附录

枚举字段接口

/**

* 实体类的枚举字段都需要实现该接口

* @author Jianhua Ying

*/

public interface EntityEnum {

Integer getCode();

}

枚举字段转换器抽象类

import javax.persistence.AttributeConverter;

import java.lang.reflect.Method;

import java.lang.reflect.ParameterizedType;

/**

* 实体类的枚举字段的转换器基类

*

* @param 枚举字段的类

*/

public abstract class EntityEnumConverter implements AttributeConverter {

private Class xclazz;

private Method valuesMethod;

@SuppressWarnings("unchecked")

public EntityEnumConverter() {

this.xclazz = (Class) (((ParameterizedType) this.getClass().getGenericSuperclass())

.getActualTypeArguments())[0];

try {

valuesMethod = xclazz.getMethod("values");

} catch (Exception e) {

throw new RuntimeException("can't get values method from " + xclazz);

}

}

@Override

public Integer convertToDatabaseColumn(EntityEnum attribute) {

return attribute == null ? null : attribute.getCode();

}

@SuppressWarnings("unchecked")

@Override

public X convertToEntityAttribute(Integer dbData) {

try {

X[] values = (X[]) valuesMethod.invoke(null);

for (X x : values) {

if (x.getCode().equals(dbData)) {

return x;

}

}

} catch (Exception e) {

throw new RuntimeException("can't convertToEntityAttribute" + e.getMessage());

}

throw new RuntimeException("unknown dbData " + dbData);

}

}

java 实体类规范_实体类的规范相关推荐

  1. Java Review - 并发编程_原子操作类LongAdder LongAccumulator剖析

    文章目录 概述 小Demo 源码分析 重要的方法 long sum() reset sumThenReset longValue() add(long x) longAccumulate(long x ...

  2. 实体组件系统_实体组件系统介绍

    实体组件系统 什么是实体组件系统?(What is Entity Component System?) Entity Component System is a software pattern co ...

  3. mysql 实体关系表_实体关系图

    解释 实体关系图:简记E-R图是指以实体.关系.属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式.E-R图为实体-联系图,提供了表示实体型.属性和联系的方法,用来描述现实世界的概念模 ...

  4. 简单叙述python的编程规范_简明 Python 编程规范

    注:之前发布一篇<简明 Python 编程规范>(见:http://blog.csdn.net/lanphaday/article/details/2834883),本是我给当时所在的公司 ...

  5. 阿里 前端 规范_阿里前端开发规范

    前端代码规范 Front Standard Guide 前端 JS 项目开发规范 规范的目的是为了编写高质量的代码,让你的团队成员每天得心情都是愉悦的,大家在一起是快乐的. 引自<阿里规约> ...

  6. Java Review - 并发编程_原子操作类原理剖析

    文章目录 概述 原子变量操作类 主要方法 incrementAndGet .decrementAndGet .getAndIncrement.getAndDecrement boolean compa ...

  7. java 字节码对象_获得类的字节码对象的三种方式

    java源码(xxx.java)通过编译后形成字节码文件,字节码文件通过类加载器获得字节码对象, 通过字节码对象可以操作源码中的属性和方法. 方式一,使用类的class属性: Class clazz1 ...

  8. java长方体的父类_长方体类Java编程题

    1.编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法voidsetBox(int l, int w, ...

  9. java专业学校排名_计算机类专业高校排名,想进IT行业,这些学校不可错过!

    如今科技不断发展,互联网人才成了当前急需的人才类型.虽然IT人才的门槛不算很高,工资却比其他很多行业高出不少,但是这些IT人才也比其他行业工作者辛苦不少,熬夜加班都是常事,遇到一些类似网站崩溃啥的,通 ...

最新文章

  1. GoogleLog(GLog)源码分析
  2. java-jvm-full gc频繁的分析及解决
  3. [OS复习]存储管理1
  4. 伪分布式Hadoop2.x集群的搭建1
  5. 写出更易懂的代码(一)
  6. 《禅者的初心》读书笔记(3)
  7. U盘数据恢复软件推荐
  8. python报错ImportError: cannot import name ‘Image‘ from ‘PIL‘ 的时候大多数情况下是由于PIL版本和当前python的版本出现了不兼容
  9. 外汇mt4 软件在哪里下载比较正规?
  10. 七大室内定位技术PK(转自3Snews)
  11. 区块链数据服务 - BDS
  12. 操作系统,Ubuntu虚拟机编译裁剪内核
  13. 搜索引擎优化排名方法
  14. 定时/计数器应用——从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁
  15. 照片怎么在线压缩?怎么压缩照片大小?
  16. 兰卡斯特大学 计算机,兰卡斯特大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第151-200位(QS世界排名)...
  17. 软考多媒体应用设计师
  18. 数据恢复工具什么牌子的好
  19. 看“千人工程”事件有感
  20. 【Linux】E297: Write error in swap file 解决办法

热门文章

  1. flat在java中的含义_Java 9中Collectors.flatMapping()方法的重要性?
  2. 实用的编程网站—良好的开端
  3. 推荐几款jquery图片切换插件
  4. python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)
  5. oracle查看context,oracle context(上下文)
  6. java 排序原理_简单选择排序算法原理及java实现(超详细)
  7. c语言fork()创建线程,操作系统的创建原语是fork()还是creat()?
  8. mysql 优化代码_MySQL Order by 语句优化代码详解
  9. vf求计算机系统当前日期的年份数,计算机二级VF常用函数列表
  10. python怎么全选_有没有一种方法可以在Python网页上模拟“全选复制粘贴”?