mybatis-plus字段类型处理器

简介: mybatis-plus字段类型处理器

人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波

我们clone下来mybatis-plus官方示例项目:

https://gitee.com/baomidou/mybatis-plus-samples.git

首先看文档:

  • JSON 字段类型
@Data
@Accessors(chain = true)
@TableName(autoResultMap = true)
public class User {
    private Long id;
    ...
    /**
     * 注意!! 必须开启映射注解
     *
     * @TableName(autoResultMap = true)
     *
     * 以下两种类型处理器,二选一 也可以同时存在
     *
     * 注意!!选择对应的 JSON 处理器也必须存在对应 JSON 解析依赖包
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    // @TableField(typeHandler = FastjsonTypeHandler.class)
    private OtherInfo otherInfo;
}

该注解对应了 XML 中写法为

<result column="other_info" jdbcType="VARCHAR" property="otherInfo" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />

文档表明,首先要加@TableName(autoResultMap = true)注解,然后再指定typeHandler

打开示例项目,可以看到确实如此

并且我们数据库表里的数据wallets字段为json

我们运行测试类测试一下:

得到的结果也是完美映射

可以看到我们这里也能自定义转换器

他这里是jackson的,如果我们要使用fastjson的,则可以继承fastjsonTypeHandler

package com.baomidou.mybatisplus.samples.typehandler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.baomidou.mybatisplus.samples.typehandler.entity.Wallet;
import java.util.List;
/**
 * 自定义复杂类型处理器<br/>
 * 不要问我为什么要重写 parse 因为顶层父类是无法获取到准确的待转换复杂返回类型数据
 */
public class WalletListTypeFastJsonHandler extends FastjsonTypeHandler {
    public WalletListTypeFastJsonHandler(Class<?> type) {
        super(type);
    }
    @Override
    protected Object parse(String json) {
        return JSON.parseObject(json, new TypeReference<List<Wallet>>() {
        });
    }
}

测试了下,成功转换

相关文章
|
1月前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
7月前
|
存储 Java 数据库连接
MyBatis的类型处理器TypeHandler与自定义实现
MyBatis的类型处理器TypeHandler与自定义实现
632 0
|
7月前
|
存储 JSON Java
深入理解 MyBatis-Plus 中的 JSON 处理器及案例演示
深入理解 MyBatis-Plus 中的 JSON 处理器及案例演示
860 0
|
7月前
|
SQL 存储 测试技术
深入了解MyBatis-Plus中的枚举处理器及实例演示
深入了解MyBatis-Plus中的枚举处理器及实例演示
365 0
|
存储 JSON Java
mybatisPlus之通用枚举及字段类型处理器
mybatisPlus之通用枚举及字段类型处理器
|
Java 数据库连接 数据库
Mybatis的typeHandlers类型处理器的使用
Java类型和JDBC类型的转换工作由类型处理器来完成。接口typeHandlers,用于处理Java类型和JDBC类型之间的转换,本文介绍的是它的一个抽象类:BaseTypeHandler。
249 0
|
存储 前端开发 Java
MyBatis 学习笔记(五)---MyBatis通用类型处理器的实现与自动注册
实际项目中,我们经常要处理一些枚举类型的数据。例如:订单的状态就分为已下单,已付款,已发货,订单完成等等很多状态,数据库中我们一般只存储的一个数字表示各种状态。但是,前台显示的话就需要显示名称给用户看,所以这中间就涉及到一个转化。我们见过太多了在前端通过 if, else 写死判断的。这样初期没啥,后期难以扩展及维护。针对这种情况,我们思考下能不能直接将枚举直接返回给前端,让前端显示时取value, 保存时传入key?这样的前端就不用写一堆判断了。
272 0
MyBatis 学习笔记(五)---MyBatis通用类型处理器的实现与自动注册
实战:第九章:关于tk.mybatis只查询字段类型为string类型
实战:第九章:关于tk.mybatis只查询字段类型为string类型
119 0
实战:第九章:关于tk.mybatis只查询字段类型为string类型
|
Java 数据库连接 程序员
详解 MyBatis 类型处理器,让你的代码更优雅!
详解 MyBatis 类型处理器,让你的代码更优雅!
209 0
详解 MyBatis 类型处理器,让你的代码更优雅!
|
存储 SQL Java
Mybatis第四篇| 类处理器什么玩意?举个栗子你就知道了
Mybatis第四篇| 类处理器什么玩意?举个栗子你就知道了
599 4
Mybatis第四篇| 类处理器什么玩意?举个栗子你就知道了
下一篇
DataWorks