马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
前言
当前的一些数据库是是支持Json格式的字段的,我们使用时映射到Java实体也是用JSONObject范例(Json实体类)汲取如许就大大镌汰创建创建实体的繁琐,更方便和机动数据传输和存储。
在MyabatisPlus中有相应的注解可以或许实现JSONObject范例字段到数据库json范例字段的映射。但是当我们的查询有联表的需求必要写xml去查询,MyabatisPlus的注解就失效了,我们只能用Mybatis上的功能,这时间我们就必要指定typeHandler。操纵如下:
一、具体操纵
实体界说:- import cn.hutool.json.JSONObject;
- /**
- * Description: new java files header..
- *
- * @author hacah
- * @version 1.0
- * @date 2024/9/4 15:38
- */
- @Data
- @ToString
- public class StatisticDTO {
- private JSONObject plotDefaultOptions;
-
- }
复制代码 JSONObject使用的是hutool工具包的类。
mapper.xml如下:- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.oriseq.mapper.StatisticMapper">
- <resultMap id="ExtendResultMap" type="com.oriseq.dtm.dto.StatisticDTO">
- <id property="id" column="id" jdbcType="INTEGER"/>
- <result property="plotDefaultOptions" column="plot_default_options" javaType="cn.hutool.json.JSONObject" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
- </resultMap>
- <select id="selectExtend" resultMap="ExtendResultMap">
- select s.*,spt.name plot_name from statistic s
- left join statistic_plot_type spt on s.plot_type_id = spt.id
- </select>
- </mapper>
复制代码 重点是我们查询的时间,界说plotDefaultOptions的javaType=“cn.hutool.json.JSONObject”,这是我们绑定在java中的json类。typeHandler=“com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler”,这是mybatisPlus写好的handlers以是我们不消自己写。如许就能实现查询时把数据映射到plotDefaultOptions里。
假如你没有依靠mybatisplus,那就自己实现一个TypeHandler
二、MyabatisPlus上的实现
假如是调用MyabatisPlus的查询(比如:service.getById())直接在实体中添加注解- package com.oriseq.dtm.dto;
- import cn.hutool.json.JSONArray;
- import cn.hutool.json.JSONObject;
- import com.baomidou.mybatisplus.annotation.TableField;
- import com.baomidou.mybatisplus.annotation.TableName;
- import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
- import com.oriseq.dtm.entity.Statistic;
- import jakarta.validation.constraints.NotNull;
- import jakarta.validation.constraints.Size;
- import lombok.Data;
- import lombok.ToString;
- import org.hibernate.validator.constraints.Length;
- import java.time.LocalDateTime;
- /**
- * Description: new java files header..
- *
- * @author hacah
- * @version 1.0
- * @date 2024/9/4 15:38
- */
- @Data
- @ToString
- @TableName(value = "statistic", autoResultMap = true)
- public class StatisticDTO {
- /**
- * id
- */
- private Integer id;
- @NotNull
- @TableField(typeHandler = JacksonTypeHandler.class)
- private JSONObject plotDefaultOptions;
- }
复制代码 放类上的 @TableName(autoResultMap = true)和放方法上的 @TableField(typeHandler = JacksonTypeHandler.class)
参考或相干文章
- https://blog.csdn.net/weixin_56793669/article/details/128446238
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |