在数据库的t_user表中,有一个类型为JSON的字段info(从MySQL5.7开始支持JSON类型),保存的数据是JSON字符串: 在其对应的实体类User中,该字段是String类型的: 这样设计时,查询到的info字段就是一个JSON字符串,而要读取其中的属性,还需要将JSON字符串转换为对象。而写入数据库时,需要将对象转换为JSON字符串,较为繁琐。
假设我们有一个名为User的表,data字段存储 JSON 格式的数据: importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importlombok.Data;@Data@TableName("user")publicclassUser{@TableIdprivateLongid;// 用户 IDprivateStringname;// 用户名称privateStringdata;// ...
两个接口测试如下:调整过后,mybatis-plus当中自带的接口是可以将json数据映射到JSONObject类型的字段当中的(不管是longtext类型存储的json还是json类型存储的json数据) 对于mybatis-plus框架我们将@TableName的autoResultMap为true,然后@TableField的typeHandler为JacksonTypeHandler.class之后,调用mybatis-plus自带的查询接口是...
1、自定义类型处理器 importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.serializer.SerializerFeature;importorg.apache.ibatis.type.BaseTypeHandler;importorg.apache.ibatis.type.JdbcType;importorg.postgresql.util.PGobject;importjava.sql.CallableStatement;importjava.sql.PreparedStatement;importjava.sql.ResultSe...
然后,我们通过调用updateProductPrice方法进行更新操作。 运行以上测试用例,可以验证 JSON 处理器在 MyBatis-Plus 中的正常工作。示例展示了如何读取和更新 JSON 字段,并验证了 JSON 处理器对于数据库字段与 Java 对象之间的正确映射。
表结构和初始数据 新建表结构 CREATE TABLE `json_test` ( `id` int NOT NULL AUTO_INCREMENT, `roles` json DEFAULT NULL COMMENT '角色', `project` json DEFAULT NULL COMMENT '项目', PRIMARY KEY (`id`) ) ENGINE=InnoDB; 初始数据 INSERT INTO `ctts_dev`.`json_test`(`id`, `roles`, `projec...
Mybatis-plus操作json字段实战 大家好,又见面了,我是你们的朋友全栈君。 后端动态列设计与实现三部曲,这是最后一步,使用java语言,结合mybatis-plus神技操作json字段。 简单介绍下mybatis-plus,大厂中mybatis使用的非常多,而mybatis-plus是基于mybatis做了扩展,进一步增强,在不影响数据存储的情况下,简化操作方式。
MyBatis Puls中已经定义了三种处理方式:FastjsonTypeHandler,GsonTypeHandler,JacksonTypeHandler我们可以直接使用。 在对应的位置添加属性autoResultMap = true和typeHandler = FastjsonTypeHandler.class即可。 方式一、 importcom.alibaba.fastjson.JSONArray;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou...
初始数据 INSERT INTO `ctts_dev`.`json_test`(`id`, `roles`, `project`) VALUES (1, '[{"id": 10001, "name": "管理员"}, {"id": 10002, "name": "开发"}, {"id": 10003, "name": "测试"}]', '{"id": 11111, "name": "项目1"}'); INSERT INTO `ctts_dev`.`json_test`(...