首页 > 编程知识 正文

jpa实体类,java类对象和实例对象

时间:2023-05-04 14:11:42 阅读:173907 作者:1480

在分析过程中,遇到列举类型的字段,诸如人的性别、用户的状态、订单的状态,往往使用数字1、2等将数据保存在数据库层中。

定义后端实体时,使用数字类型作为字段类型。 该方法需要对前端发送的数据进行合法性检查,业务代码上比较吵,建议使用枚举类定义字段类型。

但是,要在实体类中使用枚举类型,存在以下两个问题:

1、控制器层:序列化和反序列化问题。 从前端传递的参数是如何反序列化和构建此实体,即如何构建实体中的此枚举类字段(从数值转换为枚举类型)。

2、DB层:后端使用的此实体如何存储在数据库中? 是否从枚举类型转换为数字? 怎么查询? 数字转换为枚举类型。

典型的实体类类型字符串与数据库中的varchar、booleaninteger (0,1 )等相对应。 您之所以能够在不进行任何配置的情况下成功插入,是因为Mybaits中内置的TypeHandler用于自动转换。

但是,实体字段目前是枚举类,但在数据库中是数字类型。 Mybatis不识别你自定义的枚举类,不会自动转换,插入失败。

针对这两个问题,解决方法如下。 (本文仅提供思路分析、具体解决点的链接)。

Controller层方法序列化:使用@JsonValue注解,完成枚举类型转为数字类型。

反序列化:使用@JsonCreator注解,完成数字类型转为枚举类型。

使用此方法构建枚举类型实体,指定不采用默认空引用结构,并分配set值。

此方法的示例:

@ jsoncreatorpublicstaticgenderenumforvalue (integer value ) gender enum [ ] values=gender enum.values ); returnstream.of(values ).filter ) it-it.getvalue ).equals ).findAny ).orelse ) null ); } 详情:

3359 blog.csdn.net/numb be/article/details/119110754

DB层方法:entity-db:直接插入数据库中数字。

db-entity:查出来就是 枚举类型。

内置的类型转换器不能满足我们的需要,所以必须定制类型转换器,将我们定制的枚举类型转换为相应的数值并保存在数据库中。

详情:

3359 blog.csdn.net/numb be/article/details/119110852

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。