MyBatis-Plus 之 typeHandler 的使用

一、typeHandler 的使用
   1、存储json格式字段

        如果字段需要存储为json格式,可以使用JacksonTypeHandler处理器。使用方式非常简单,如下所示:
        

在domain实体类里面要加上,两个注解

  @TableName(autoResultMap = true) 表示自动映射resultMap


         @TableField(typeHandler = JacksonTypeHandler.class)表示将UserInfo对象转为json对象入库

    /*** 物料分类*/@TableField(typeHandler = SupplierMaterialCategoryTypeHandler.class)private List<MaterialCategory> materialCategory;

   2、自定义 typeHandler 实现类
        例如当我们 某个字段存储的类型为List或者Map时,我们可以自定义一个TypeHandler,以 list 为例,我们想存储一个字段类型为 list ,在数据库中的存储的格式是 多条数据以逗号分割,当查询时会自动根据逗号分割成列表格式。

        需要实现BaseTypeHandler抽象类:

package com.mdgyl.hussar.basic.handler;import com.mdgyl.common.util.vo.ChangeInfoVO;
import com.mdgyl.data.mybatis.plus.typehandler.ListTypeHandler;
import com.mdgyl.hussar.basic.supplier.masterdata.domain.SupplierDO;/*** @author shuquanlin*/
public class SupplierMaterialCategoryTypeHandler extends ListTypeHandler<SupplierDO.MaterialCategory> {@Overrideprotected SupplierDO.MaterialCategory specificType() {return new SupplierDO.MaterialCategory();}
}

在mybaits中的xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mdgyl.hussar.basic.supplier.changeorder.dao.ChangeOrderMapper"><resultMap id="BaseResultMap" type="com.mdgyl.hussar.basic.supplier.changeorder.domain.SupplierChangeOrderDo"><id column="id" property="id" jdbcType="BIGINT" /><result column="tenant_id" property="tenantId" jdbcType="BIGINT" /><result column="supplier_id" property="supplierId" jdbcType="BIGINT" /><result column="code" property="code" jdbcType="BIGINT" /><result column="els_account" property="elsAccount" jdbcType="VARCHAR" /><result column="name" property="name" jdbcType="VARCHAR" /><result column="external_code" property="externalCode" jdbcType="VARCHAR" /><result column="material_category" property="materialCategory" typeHandler="com.mdgyl.hussar.basic.handler.ChangeOrderMaterialCategoryTypeHandler" /><result column="status" property="status" jdbcType="VARCHAR" /><result column="audit_status" property="auditStatus" jdbcType="VARCHAR" /><result column="source_scene" property="sourceScene" jdbcType="VARCHAR" /><result column="score" property="score" jdbcType="DECIMAL" /><result column="contact_information" property="contactInformation" jdbcType="VARCHAR" /><result column="inquiry_type" property="inquiryType" jdbcType="VARCHAR" /><result column="route" property="route" jdbcType="VARCHAR" /><result column="transaction_currency" property="transactionCurrency" jdbcType="VARCHAR" /><result column="payment_currency" property="paymentCurrency" jdbcType="VARCHAR" /><result column="payment_condition" property="paymentCondition" jdbcType="VARCHAR" /><result column="open_account_condition" property="openAccountCondition" jdbcType="VARCHAR" /><result column="operating_start_time" property="operatingStartTime" jdbcType="DATE" /><result column="taxpayer_identity_number" property="taxpayerIdentityNumber" jdbcType="VARCHAR" /><result column="unified_social_credit_code" property="unifiedSocialCreditCode" jdbcType="VARCHAR" /><result column="belong_company_id" property="belongCompanyId" jdbcType="BIGINT" /><result column="purchaser_head_id" property="purchaserHeadId" jdbcType="BIGINT" /><result column="create_user_id" property="createUserId" jdbcType="BIGINT" /><result column="create_user_name" property="createUserName" jdbcType="VARCHAR" /><result column="update_user_id" property="updateUserId" jdbcType="BIGINT" /><result column="update_user_name" property="updateUserName" jdbcType="VARCHAR" /><result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /><result column="create_time" property="createTime" jdbcType="TIMESTAMP" /><result column="delete_flag" property="deleteFlag" jdbcType="VARCHAR" /><result column="legal_representative" property="legalRepresentative" jdbcType="VARCHAR" /><result column="supplier_data_id" property="supplierDataId" jdbcType="BIGINT" /></resultMap><select id="groupByStatus" parameterType="com.mdgyl.hussar.basic.param.changeOrder.SupplierChangeOrderPageQueryParam" resultType="com.mdgyl.hussar.basic.model.common.StatusGroupModel">SELECT status AS status,count(id) AS countFROM `t_supplier_change_order`WHERE tenant_id = #{tenantId} AND delete_flag = '0'<if test="code != null and code != ''">AND code = #{code}</if><if test="elsAccount != null and elsAccount != ''">AND els_account = #{elsAccount}</if><if test="name != null and name != ''">AND name = #{name}</if><if test="supplierId != null and supplierId != ''">AND supplier_id = #{supplierId}</if>GROUP BY status</select>
</mapper>

如果要查找json中的字段,可以在domain类里面加上虚拟字段

@TableField(exist = false)public static final String materialCategoryUserIdQuery = "JSON_CONTAINS(material_category, JSON_OBJECT('materialCategoryUserId', {0}))";

在xml文件中加上

       <if test="name != null and name != ''">AND JSON_CONTAINS(material_category, JSON_OBJECT('materialCategoryName', #{name}))</if>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/445293.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云-云直播

云直播&#xff08;Cloud Streaming Services&#xff09;为您提供极速、稳定、专业的直播云端处理服务&#xff0c;根据业务中不同直播场景的需求&#xff0c;云直播提供标准直播、快直播、慢直播和云导播台服务&#xff0c;分别针对大规模实时观看、高并发推流录制及超低延时…

数学建模算法与应用 第11章 偏最小二乘回归及其方法

目录 11.1 偏最小二乘回归概述 11.2 Matlab 偏最小二乘回归命令 Matlab代码示例&#xff1a;偏最小二乘回归 11.3 案例分析&#xff1a;化学反应中的偏最小二乘回归 Matlab代码示例&#xff1a;光谱数据的PLS回归 习题 11 总结 偏最小二乘回归&#xff08;Partial Least …

如何加密重要U盘?U盘怎么加密保护?

在日常生活中&#xff0c;我们常常使用U盘来存储和传输重要文件。然而&#xff0c;U盘的便携性也意味着它容易丢失或被盗。为了保护U盘中的数据安全&#xff0c;我们需要对U盘进行加密。本文将为您介绍如何加密重要U盘&#xff0c;以及U盘加密保护的方法。 BitLocker BitLocke…

动态规划——多状态动态规划问题

目录 一、打家劫舍 二、打家劫舍 II 三、删除并获得点数 四、粉刷房子 五、买卖股票的最佳时机含冷冻期 六、买卖股票的最佳时机含手续费 七、买卖股票的最佳时机III 八、买卖股票的最佳时机IV 一、打家劫舍 打家劫舍 第一步&#xff1a;确定状态表示 当我们每次…

『Mysql进阶』Mysql SQL语句性能分析(七)

目录 什么是Profile&#xff1f; 开启Profile功能 基本使用 分析案例 什么是Profile&#xff1f; Query Profiler是 MySQL 自带的一种 Query 诊断分析工具 &#xff0c;通过它可以分析出一条 SQL 语句的 硬件性能瓶颈 在什么地方。 通常我们是使用的 explain &#xff0c;…

企业内部文档安全外发如何挑选合适的外发系统?

企业文档的外发不仅关系到运营效率&#xff0c;更是信息安全的重要组成部分。面对B2B模式下文档交换的普遍性和重要性&#xff0c;企业内部文档的安全外发成为了众多公司关注的重点之一。 随着互联网技术的发展&#xff0c;企业之间的合作越来越紧密&#xff0c;文档的交流也变…

springboot+react实现移动端相册(上传图片到oss/ 批量删除/ 查看图片详情等功能)

相册页面及功能展示&#xff1a; react前端结构及代码&#xff1a; Java后端结构及代码 数据库结构&#xff1a; photo&#xff1a; user 这是首个利用AI自有知识构建的简易相册系统&#xff0c;项目是react构造前端spring boot构造后端。 前端有四个主要页面&#xff1…

Compose第六弹 对话框与弹窗

1.compose中怎么使用对话框&#xff1f; 2.怎么显示Popup弹窗&#xff1f; 一、Compose显示对话框 二、Popup Popup就类似以前的Popupwindow&#xff0c;我们可以看到其实上面的DropdownMenu是Popup的一个具体实现。 2.1 Popup定义 Popup的定义如下&#xff1a; Composable…

Windows 下 cocos2d-x-3.17.2 VS2017开发环境搭建

1.下载cocos2d-x-3.17.2 源码: Cocos2d-x - 成熟、轻量、开放的跨平台解决方案 2.下载Python2 Python 2.7.0 Release | Python.org 加入环境变量: 测试版本

JAVA基础 day12

一、File、IO流 File是java.io.包下的类&#xff0c;file类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以代表文件、文件夹&#xff09;&#xff0c;使用File可以操作文件及文件夹。 注意&#xff1a;File只能对文件本身进行操作&#xff0c;不能读写文件里…

哈夫曼树和哈夫曼编码

现在需要对下列字符编码 其中我么你发现A 出现三次&#xff0c;B出现一次&#xff0c;C出现两次&#xff0c;D出现一次 那么我们统计出现次数为&#xff1a;3&#xff0c;2&#xff0c;1&#xff0c;1 我们将1&#xff0c;1组成一个树 现在统计次数变为3&#xff0c;2&#x…

Java—继承性与多态性

目录 一、this关键字 1. 理解this 2. this练习 二、继承性 2.1 继承性的理解 2.1.1 多层继承 2.2 继承性的使用练习 2.2.1 练习1 2.2.2 练习2 2.3 方法的重写 2.4 super关键字 2.4.1 子类对象实例化 三、多态性 3.1 多态性的理解 3.2 向下转型与多态练习 四、Ob…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

神经网络超参数优化

遗传算法与深度学习实战&#xff08;16&#xff09;——神经网络超参数优化 0. 前言1. 深度学习基础1.1 传统机器学习1.2 深度学习 2. 神经网络超参数调整2.1 超参数调整策略2.2 超参数调整对神经网络影响 3. 超参数调整规则小结系列链接 0. 前言 我们已经学习了多种形式的进化…

鸿蒙开发实战项目【硅谷租房】--- 项目介绍

目录 一、简述 二、项目资料 2.1 UI设计稿 2.2 服务器 2.3 Apifox接口JSON文件 使用 Apifox 测试接口 一、简述 这是一个基于 鸿蒙 API12 开发的移动端租房 App&#xff0c;用户可以使用该应用搜索租房列表、查看房屋详情、预约租房等。 该项目的tabbar包含五部分&…

网站集群批量管理-Ansible(ad-hoc)

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

Android终端GB28181音视频实时回传设计探讨

技术背景 好多开发者&#xff0c;在调研Android平台GB28181实时回传的时候&#xff0c;对这块整体的流程&#xff0c;没有个整体的了解&#xff0c;本文以大牛直播SDK的SmartGBD设计开发为例&#xff0c;聊下如何在Android终端实现GB28181音视频数据实时回传。 技术实现 Andr…

操作系统导论阅读 - 虚拟化

近期系统性地过一下操作系统导论 第二章 操作系统介绍 冯诺伊曼架构 冯诺依曼架构的核心思想&#xff1a; 使用二进制存储数据像存储数据一样来存储程序计算机由输入设备&#xff0c;输出设备以及控制器&#xff0c;运算器和存储器五部分组成 通常使用的键盘&#xff0c;…

SevenZip++显示当前压缩进度的范例

以前写7z压缩工具&#xff0c;直接调用命令行的话&#xff0c;因为无法提取命令行的压缩进度所以无法在界面上显示当前压缩进度&#xff0c;现在用SevenZip&#xff0c;成功提取到了压缩到7z过程中的压缩进度&#xff0c;先在命令行中展示一下效果吧。 直接上代码&#xff0c;看…

企业架构系列(19)TOGAF企业连续体和构建块

TOGAF 企业连续体&#xff08;Enterprise Continuum&#xff09;是一个用于对架构描述进行分类的框架。它有助于突出架构师在哪个抽象层次上工作&#xff0c;并概述了不同目的下应使用的不同层次。而构建块&#xff08;Building Blocks&#xff09;是用来描述这些架构和解决方案…