AttributeConverter

javax.persistence.AttributeConverter

开发中有一个问题,有一个业务对象,它的属性是一个JSONObject对象,但是我们希望存入数据库时,存为json字符串。前端在插入和查询时,都是以对象来处理,所以希望能自动转换,即在插入数据库时,转为字符串,查询出来后转为对象。这就用到了今天要说的属性转换器。

第一步:定义一个属性转换器

* @author zx * @date 2019/8/22 0022 10:43 * @description: public class JSONArrayToStringConverter implements AttributeConverter < JSONArray , String > { @Override public String convertToDatabaseColumn ( JSONArray object ) { return object == null ? null : object . toJSONString ( ) ; @Override public JSONArray convertToEntityAttribute ( String s ) { return s == null ? null : JSONArray . parseArray ( s ) ;

这个转换器,实现了javax.persistence.AttributeConverter接口,在存入数据库时,将对象转为字符串,在查询获时,转为实体对象。

第二步:在实体类中标注@Convert注解,并指明转换类。

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Builder
@ToString(callSuper = true)
@Entity
@Table(name = "t_business_rules")
public class BusinessRules extends BaseEntity {
	//其他属性...
    @Convert(converter = JSONObjectToStringConverter.class)
    private JSONObject frequency;
    @Convert(converter = JSONArrayToStringConverter.class)
    private JSONArray conditions;
    @Convert(converter = JSONObjectToStringConverter.class)
    private JSONObject actions;

这样就ok了,前端参数就可以直接写成JSONObject的格式,就完成了自动转换,当然如果需要其类型的转换,只需要更改转换类的代码即可。

AttributeConverterjavax.persistence.AttributeConverter开发中有一个问题,有一个业务对象,它的属性是一个JSONObject对象,但是我们希望存入数据库时,存为json字符串。前端在插入和查询时,都是以对象来处理,所以希望能自动转换,即在插入数据库时,转为字符串,查询出来后转为对象。这就用到了今天要说的属性转换器。第一步:定义一个属性转换器...
通过 @Convert 注解指定自定义转换器,可用于实体属性类型与数据库字段类型之间的相互转换,便于将数据存储至数据库或从数据库读取数据。 @Repeatable(Converts.class) @Target({METHOD, FIELD, TYPE}) @Retention(RUNTIME) public @interface Convert { Class converter() de...
@Convert 可将不是基本数据类型的数据按照一定的格式转换成可存入数据库的基本类型,类似于自动拆装箱操作。 1、新建Converter类 2、实现javax.persistence.AttributeConverter包下的AttributeConverter接口 3、重写convertToDatabaseColumn()和convertToEntityAttribute() 4、在...
虽然 Spring Data JPA 已经对数据的操作封装的很好了,约定大于配置的思想,帮我们默认了很多东西。JPA(Java 持久性 API)是存储业务实体关联的实体的来源,它显示了如何定义一个面向普通 Java 对象(POJO)作为一个实体,以及如何与管理关系实体,提供了一套标准。因此,javax.persistence 下面的有些注解我们还是必须要去了解的,便于更好的提高工作效率。 (1)javax.persistence 我们打开源码位于 hibernate-jpa-**.jar 包里面。
TypeConverterAttribute Class TypeConverterAttribute 其实就是一个继承Attribute的类,使用[TypeConverter(typeof(MyClassConverter))]标签施加到程序实体上。根据TypeConverterAttritue的定义知道这个属性Attribute可以施加到所有实体上。 [AttributeU...
我们在《Java for Web学习笔记(一零八):再谈Entity映射(1)数据转换》中已经给出了通过转换器将数据库列的信息和指定类属性进行转换的例子。 原生JDBC的时间日期转换 JDBC的版本 我们原来使用的mysql-connector-java-5.1.x支持多个JDBC的版本,我们可以通过下面的原生jdbc代码来检查当前使用的版本: try(Connection conn...
开发过程中我们可能会遇到这样的问题。如何将一个Map<String,String>(一个Object)保存到数据库中,很多人的第一想法是这个简单。只要我们持久化的时候将这个Map转换成一个JSON以String的形式保存即可。 今天我们换一个新的方式去实现这个功能: 首先我们要了解一个东西AttributeConverters属性转换器 第一步:实现一个AttributeConve...
public class BooleanConverter implements AttributeConverter<Boolean, Integer> { 2. 属性注解 @Column(name = "VALID")@Convert(converter = BooleanConverter.class) 转载于:https://www.cnblogs.c...
用于数据库属性类型与java存储的类型做转换,例如枚举类型,在存储到数据库时或者在数据库取出来时,不用手动转换。 必须实现接口AttributeConverter&lt;X,Y&gt;,源码如下: package javax.persistence; * A class that implements this interface can be used to conver...
JPA配置管理BeanHibernateORM JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar。我用以下三个类来说明用法。 sh原创 转载请注明:http://67566894.iteye.com/blog/659829 Java代码  
http://www.boyunjian.com/javasrc/org.eclipse.persistence/javax.persistence/2.1.0/_/javax/persistence/Convert.java /*******************************************************************************
Reference : https://blog.csdn.net/losfog/article/details/88046161 https://www.baeldung.com/jpa-attribute-converters https://github.com/eugenp/tutorials/tree/master/persistence-modules/hibernate-jpa