MyBatis-Plus字段类型处理器使用

说明:之前介绍过手动写一个数据库字段类型处理器,本文介绍 MyBatis-Plus 自带的封装好了的字段类型处理器使用。

注解方式

如下,是一个 DO 对象,其中 address 字段,在数据库中是 json 类型,准确的说,是 json 数组类型

java 复制代码
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName(value = "tb_users")
public class UserDO implements Serializable {

    @TableId
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 地址
     */
    private String address;
}

数据如下:

这样的数据,可以直接使用 String 类型接收,查询如下:

像封装到对象里,可使用 MyBatis-Plus 的 TableField() 注解,如下:

java 复制代码
    /**
     * 地址
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<AddressDTO> address;

需要注意的是,类上的 @TableName() 注解需添加自动映射设置,不然没有效果

另外,封装的 AddressDTO 对象,对应的构造方法,setter/getter 方法,也不要缺,如下:

java 复制代码
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddressDTO implements Serializable {

    /**
     * 城市
     */
    private String city;

    /**
     * 国家
     */
    private String country;

    /**
     * 详细地址
     */
    private String detail;
}

查询,可见数据被封装到 DTO 对象里

XML方式

如果是在 Mapper.xml 中手写的 SQL,就更方便了,在 ResultMap 标签中指定 MyBatis-Plus 中对应的字段类型处理器即可,如下:

可能封装进来(类上的注解和自动映射的配置可以去掉了)

另外

除了将 json 数组类型的数据,封装到一个对象集合里,MyBatis-Plus 还提供了其他几个字段类型处理器,翻一下源码,可以看到下面这几个处理器

也可以直接封装到 Fastjson 里,如 JSONArray

java 复制代码
    /**
     * 地址
     */
    @TableField(typeHandler = Fastjson2TypeHandler.class)
    private JSONArray address;

看,还省的创建 DTO 了

相关推荐
子兮曰21 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!21 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰21 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里21 小时前
java中的继承和多态的区别
java
小羊没烦恼!21 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝21 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕21 小时前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码21 小时前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖21 小时前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm