MyBatisPlus-JSON处理器


一、背景

在Java中,无法直接映射数据库中的JSON字段,只能通过字符串的方式进行映射,如果我们想把字符串数据转化为JSON数据,需要进行类型的转换,所以我们可以使用MyBatisPlus提供的JSON序列化器,可以直接将数据库中的JSON字段映射到实体类中。

二、准备工作

2.1 SpringBoot集成MyBatisPlus

参考

2.2 创建数据库

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 80013
 Source Host           : localhost:3306
 Source Schema         : spingboot-mybatis-demo

 Target Server Type    : MySQL
 Target Server Version : 80013
 File Encoding         : 65001

 Date: 18/01/2024 10:42:20
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for common
-- ----------------------------
DROP TABLE IF EXISTS `common`;
CREATE TABLE `common`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
  `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
  `info` json NULL COMMENT '详细信息',
  `status` int(11) NULL DEFAULT NULL COMMENT '状态:0 停止 1开启',
  `balance` int(11) NULL DEFAULT NULL COMMENT '账户余额',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of common
-- ----------------------------
INSERT INTO `common` VALUES (1, '张三', '123456', '18000000000', '{\"age\": 20, \"intro\": \"佛系青年\", \"gender\": \"male\"}', 1, 10000, '2024-01-18 10:24:47', '2024-01-18 10:24:47');

SET FOREIGN_KEY_CHECKS = 1;

二、定义实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
public class CommonInfo {
    private Integer age;
    private String intro;
    private String gender;
}
@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
@TableName(value = "common", autoResultMap = true)  // 开启结果集映射
public class Common {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    private String phone;
    /**
     * 设置JSON处理器
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private CommonInfo info;
    private Integer status;
    private Integer balance;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

注意:MyBatisPlus中没有在YML文件中配置全局JSON序列化器的方法,所以需要要使用的话,需要在指定字段上增加typeHandler进行类型转换,MyBatisPlus默认使用的是JacksonTypeHandler序列化器,步骤如下:

  • 第一步:在数据库中定义JSON类型的字段。
  • 第二步:在指定的字段上增加@TableField(typeHandler = JacksonTypeHandler.class)注解进行类型的转换。
  • 第三步:在实体类上增加autoResultMap = true属性开始自动映射。

三、测试

@Slf4j
@SpringBootTest
public class JsonTypeTest {

    @Autowired
    private ICommonService commonService;
    
	// 插入数据
    @Test
    public void insertTest() {
        Common common = new Common();
        common.setUsername("张三");
        common.setPassword("123456");
        common.setPhone("18000000000");
        common.setInfo(CommonInfo.of(20, "佛系青年", "male"));
        common.setStatus(1);
        common.setBalance(10000);
        common.setCreateTime(LocalDateTime.now());
        common.setUpdateTime(LocalDateTime.now());

        commonService.save(common);
    }

	// 查询数据
    @Test
    public void queryTest() {
        Common common = commonService.getById(1);
        Integer age = common.getInfo().getAge();
        String gender = common.getInfo().getGender();
        String intro = common.getInfo().getIntro();
        log.info("年龄:{}", age);
        log.info("gender:{}", gender);
        log.info("intro:{}", intro);
    }
}
  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vb-json 是一个用于处理 JSON 数据的VB.NET 库。它提供了将 JSON 数据转换为VB.NET 对象以及将 VB.NET 对象转换为 JSON 数据的功能。你可以通过下载并引用 vb-json 库来在你的 VB.NET 项目中使用它。 你可以在 vb-json 的官方网站或一些开放源代码托管平台上找到它的下载链接。在这些网站上,你可以选择下载最新版本的 vb-json。 下载 vb-json 之后,你需要将它添加到你的 VB.NET 项目中。首先,打开你的 VB.NET 项目,在解决方案资源管理器中,找到你的项目名称。右键点击项目名称,然后选择 "添加引用"。在弹出的对话框中,点击 "浏览" 或 "浏览" 按钮,然后找到你下载的 vb-json 库的位置。 一旦你选择了 vb-json 的文件,点击 "确定" 或 "添加" 按钮将它添加到你的项目中。此时,你就可以在你的 VB.NET 项目中使用 vb-json 库了。 为了使用 vb-json 的功能,你需要在你的代码中引用 vb-json 的命名空间。通常情况下,你可以在你的代码文件的开头添加 `Imports Newtonsoft.Json` 的语句来引用 vb-json。 现在,你可以使用 vb-json 来处理 JSON 数据了。你可以使用 vb-json 的方法将 JSON 数据转换为 VB.NET 对象,并对其进行操作。你还可以使用 vb-json 将 VB.NET 对象转换为 JSON 数据,以便于存储或传输。 总结起来,要下载 vb-json,你可以在官方网站或开放源代码托管平台上找到它的下载链接。下载之后,将其添加到你的 VB.NET 项目中,并在代码中引用 vb-json 的命名空间,即可使用其功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monly21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值