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 了

相关推荐
面向Google编程6 小时前
从零学习Kafka:数据存储
后端·kafka
马克Markorg6 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
易安说AI7 小时前
Claude Opus 4.6 凌晨发布,我体验了一整晚,说说真实感受。
后端
易安说AI7 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
易安说AI7 小时前
用 Claude Code 远程分析生产日志,追踪 Claude Max 账户被封原因
后端
JH30737 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
颜酱8 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy8 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
invicinble9 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat