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 了

相关推荐
风象南6 小时前
我把大脑开源给了AI
人工智能·后端
NineData8 小时前
NineData 迁移评估功能正式上线
数据库·dba
橙序员小站10 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德10 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆12 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
NineData13 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
开心就好202513 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字14 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常14 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强14 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端