Mybatis-Plus 对 json 的存储使用支持

场景分析:

随着数据库对字段类型支持的多元化,json 类型的存储已成为多场景高频使用的字段类型。而 MySql、postgrpSql 等都支持json类型的存储,但 Mybatis 支持的基本类型中,是没有json类型的,需要单独配置 typeHandler 进行转换。

此文章会介绍在使用 Mybatis-Plus 的过程中,如何配置来实现对 json 类型的支持。

1、修改 pojo 中的注解

  • 在类注解 @TableName 中,给 autoResultMap 设置属性值为 true(默认是false)
  • 修改支持 json 存储的字段的注解,添加注解 @TableField(typeHandler = JacksonTypeHandler.class) , 此 typeHandler 为官方提供的,也可以自定义 Handler 实现类型转换

2、修改 mapper.xml 中的 resultMap

  • 修改 mapper 中 resultMap 中映射的对应字段,也将 typeHandler 配置上

3、修改数据库连接,增加配置

在配置文件中,修改数据库的 url ,添加配置 stringtype=unspecified , 此配置用于数据支持特殊类型的转换

!!!若缺失此配置,将会出现如下报错

SQL: UPDATE viewing_angle  SET name=?, destination=?, orientation=?  WHERE id=?
### Cause: org.postgresql.util.PSQLException: ERROR: column "destination" is of type json but expression is of type character varying
建议:You will need to rewrite or cast the expression.
位置:48
; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: column "destination" is of type json but expression is of type character varying
建议:You will need to rewrite or cast the expression.

4、特别说明

截图中展示的 TestPerson.class 类,一定要实现序列化,实现 Serializable,否则会出现类型转换失败。

如果要实现 list -> json 的转换实现存储,就需要自定义 typeHandler 了,然后再配置到对应字段上就可以。

Mybatis-Plus 对 json 的存储使用支持的更多相关文章

  1. 【归纳整理】Ajax / JSON / WEB存储 / iframe

      Ajax 一.什么是 AJAX ? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种用于创建快速动态网页 ...

  2. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  3. Atitti 存储引擎支持的国内点与特性attilax总结

    Atitti 存储引擎支持的国内点与特性attilax总结 存储引擎处理的事情: · 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定). · 事务支持:并非所有的应用程序都需要 ...

  4. Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)

    自己手动实现的前提,对maven项目有基本的了解,在本地成功搭建了maven环境,可以参考我之前的文章:maven环境搭建 项目里新建表时model,mapper以及mapper.xml基本都是用My ...

  5. Python3编写网络爬虫09-数据存储方式二-JSON文件存储

    2.JSON文件存储 全称为JavaScript Object Notation 通过对象和数组的组合来表示数据,构造简洁且结构化程度非常高.是一种轻量级的数据交换格式 2.1 对象和数组 在Java ...

  6. python mysql数据库中 json的存储

    首先数据库里的字段类型需要设置为json: 存储这个json时需要把这个json变为字符串,而且是最外层为单引号,内部字符串为双引号!如图:  所以python脚本中这个字段的字符串应该这样写: 得出 ...

  7. 使用SpringMVC+mybatis+事务控制+JSON 配置最简单WEB

    最近在总结一些项目的基础知识,根据公司最近的一些意向和技术路线,初步整理了一个简单的配置例子     1.使用springmvc代替strutsMVC     2.使用请求json数据串的方式代替传统 ...

  8. H5本地存储详细使用教程(localStorage + JSON数据存储应用框架)

    一.Web Storage教程 1.概述: 对于Web Storage来说,实际上是Cookies存储的进化版.如果了解Cookie的人几乎一看Web Storage就会用,如果你从来没用过没了解过C ...

  9. python之json数据存储

    # 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...

  10. mongodb底层存储和索引原理——本质是文档数据库,无表设计,同时wiredTiger存储引擎支持文档级别的锁,MMAPv1引擎基于mmap,二级索引(二级是文档的存储位置信息『文件id + 文件内offset 』)

    MongoDB是面向文档的数据库管理系统DBMS(显然mongodb不是oracle那样的RDBMS,而仅仅是DBMS). 想想一下MySQL中没有任何关系型数据库的表,而由JSON类型的对象组成数据 ...

随机推荐

  1. MySQL8 二进制日志

    启用二进制日志 # cat /etc/my.cnf [mysqld] server_id=100 log_bin=/var/log/mysql/binlogs/server1 # mkdir -p / ...

  2. MinIO监控指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-monitoring-guide MinIO服务器通过端点公开监视数据.监视工具可以从这些端点中选择 ...

  3. kubernetes(k8s)命令大全

    状态查询 # 查看集群信息 # kubectl cluster-info Kubernetes control plane is running at https://127.0.0.1:8443 K ...

  4. Portainer 安装MySQL并开启远程访问

    进入到 Portainer 页面,选择左边的 Containers 选项,单击上方的 Add container 按钮转到如图所示的页面: 1.在 Name 一栏中输入容器名字: 2.在 Image ...

  5. 9. Fluentd部署:日志

    Fluentd是用来处理其他系统产生的日志的,它本身也会产生一些运行时日志.Fluentd包含两个日志层:全局日志和插件级日志.每个层次的日志都可以进行单独配置. 日志级别 Fluentd的日志包含6 ...

  6. PHP全栈开发(八):CSS Ⅱ 创建

    CSS一共有三种创建方式,分别是 外部样式表 内部样式表 内联样式表 外部样式表顾名思义,是将HTML文件与CSS文件分开,形成两个独立的文件,CSS文件以.css结尾. 我们可以在HTML的头部里面 ...

  7. AgileBoot - 基于SpringBoot + Vue3的前后端快速开发脚手架

    AgileBoot 仓库 后端地址:https://github.com/valarchie/AgileBoot-Back-End 技术栈:Springboot / Spring Security / ...

  8. Dubbo 03: 直连式 + 接口工程

    进一步改正dubbo框架中简单的直连式的不足 需要用到3个相互独立的maven工程,项目1为maven的java工程作为接口工程,项目2,3为maven的web工程 工程1:o3-link-inter ...

  9. Vue学习之--------脚手架的分析、Ref属性、Props配置(2022/7/28)

    欢迎大家加入我的社区:http://t.csdn.cn/Q52km 社区中不定时发红包 文章目录 1.脚手架的分析 2.ref属性 2.1 基础知识 2.2 代码实现 2.3 测试效果 3.Props ...

  10. CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别

    CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别 总结: "value 是完整单词" 类型的比较符号: ~=, |= "拼接字符串" 类型的比较 ...