java 实体类规范_实体类的规范
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 实体类规范_实体类的规范相关推荐
- Java Review - 并发编程_原子操作类LongAdder LongAccumulator剖析
文章目录 概述 小Demo 源码分析 重要的方法 long sum() reset sumThenReset longValue() add(long x) longAccumulate(long x ...
- 实体组件系统_实体组件系统介绍
实体组件系统 什么是实体组件系统?(What is Entity Component System?) Entity Component System is a software pattern co ...
- mysql 实体关系表_实体关系图
解释 实体关系图:简记E-R图是指以实体.关系.属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式.E-R图为实体-联系图,提供了表示实体型.属性和联系的方法,用来描述现实世界的概念模 ...
- 简单叙述python的编程规范_简明 Python 编程规范
注:之前发布一篇<简明 Python 编程规范>(见:http://blog.csdn.net/lanphaday/article/details/2834883),本是我给当时所在的公司 ...
- 阿里 前端 规范_阿里前端开发规范
前端代码规范 Front Standard Guide 前端 JS 项目开发规范 规范的目的是为了编写高质量的代码,让你的团队成员每天得心情都是愉悦的,大家在一起是快乐的. 引自<阿里规约> ...
- Java Review - 并发编程_原子操作类原理剖析
文章目录 概述 原子变量操作类 主要方法 incrementAndGet .decrementAndGet .getAndIncrement.getAndDecrement boolean compa ...
- java 字节码对象_获得类的字节码对象的三种方式
java源码(xxx.java)通过编译后形成字节码文件,字节码文件通过类加载器获得字节码对象, 通过字节码对象可以操作源码中的属性和方法. 方式一,使用类的class属性: Class clazz1 ...
- java长方体的父类_长方体类Java编程题
1.编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法voidsetBox(int l, int w, ...
- java专业学校排名_计算机类专业高校排名,想进IT行业,这些学校不可错过!
如今科技不断发展,互联网人才成了当前急需的人才类型.虽然IT人才的门槛不算很高,工资却比其他很多行业高出不少,但是这些IT人才也比其他行业工作者辛苦不少,熬夜加班都是常事,遇到一些类似网站崩溃啥的,通 ...
最新文章
- GoogleLog(GLog)源码分析
- java-jvm-full gc频繁的分析及解决
- [OS复习]存储管理1
- 伪分布式Hadoop2.x集群的搭建1
- 写出更易懂的代码(一)
- 《禅者的初心》读书笔记(3)
- U盘数据恢复软件推荐
- python报错ImportError: cannot import name ‘Image‘ from ‘PIL‘ 的时候大多数情况下是由于PIL版本和当前python的版本出现了不兼容
- 外汇mt4 软件在哪里下载比较正规?
- 七大室内定位技术PK(转自3Snews)
- 区块链数据服务 - BDS
- 操作系统,Ubuntu虚拟机编译裁剪内核
- 搜索引擎优化排名方法
- 定时/计数器应用——从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁
- 照片怎么在线压缩?怎么压缩照片大小?
- 兰卡斯特大学 计算机,兰卡斯特大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第151-200位(QS世界排名)...
- 软考多媒体应用设计师
- 数据恢复工具什么牌子的好
- 看“千人工程”事件有感
- 【Linux】E297: Write error in swap file 解决办法
热门文章
- flat在java中的含义_Java 9中Collectors.flatMapping()方法的重要性?
- 实用的编程网站—良好的开端
- 推荐几款jquery图片切换插件
- python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)
- oracle查看context,oracle context(上下文)
- java 排序原理_简单选择排序算法原理及java实现(超详细)
- c语言fork()创建线程,操作系统的创建原语是fork()还是creat()?
- mysql 优化代码_MySQL Order by 语句优化代码详解
- vf求计算机系统当前日期的年份数,计算机二级VF常用函数列表
- python怎么全选_有没有一种方法可以在Python网页上模拟“全选复制粘贴”?