全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

mybatisplusjson详解

发布时间:2023-11-25 13:37:00
发布人:xqq

一、mybatisplusjson是什么

Mybatisplusjson是基于Mybatisplus开发的一个json工具库,它主要是为了解决Java代码中复杂的数据类型(如Map)、嵌套属性等难以处理的问题。它的主要功能是将Java对象或集合转换为JSON格式,或将JSON数据反序列化为Java对象或集合。mybatisplusjson的使用方法和使用场景如下。

二、mybatisplusjson的使用方法

使用mybatisplusjson,需要引入如下依赖:


    com.baomidou
    mybatisplus-json
    最新版本

使用mybatisplusjson转换对象为JSON格式的代码:

user=new User();
user.setId(1);
user.setName("Tom");
user.setAge(25);
String json=JSONUtil.toJsonStr(user);
System.out.println(json);

使用mybatisplusjson反序列化JSON数据的代码:

String json="{\"id\":1,\"name\":\"Tom\",\"age\":25}";
User user=JSONUtil.toBean(json,User.class);
System.out.println(user.getName());

三、mybatisplusjson的使用场景

1.处理复杂嵌套属性

Java中的复杂嵌套属性,如Map、List等,难以转换为JSON格式。使用mybatisplusjson可以轻松地解决这个问题,只需要对嵌套属性进行递归处理即可。例如,对于如下嵌套属性的Java对象:

public class User {
    private int id;
    private String name;
    private int age;
    private Map extendInfo;
    //省略getter和setter
}

使用mybatisplusjson将其转换为JSON格式的代码:

User user=new User();
user.setId(1);
user.setName("Tom");
user.setAge(25);
Map extendInfo=new HashMap<>();
extendInfo.put("address","Beijing");
extendInfo.put("phone","13100001111");
user.setExtendInfo(extendInfo);
String json=JSONUtil.toJsonStr(user);
System.out.println(json);

JSON格式的输出结果如下所示:

{
  "age": 25,
  "extendInfo": {
    "address": "Beijing",
    "phone": "13100001111"
  },
  "id": 1,
  "name": "Tom"
}

2.处理时间格式

Java中的时间格式难以处理,例如Date类型通常都需要在转换成JSON格式时进行格式化。mybatisplusjson提供了方便的工具方法,可以轻松地对时间格式进行处理,例如:

User user=new User();
user.setId(1);
user.setName("Tom");
user.setDob(new Date());
String json=JSONUtil.toJsonStr(user,
        SerializerFeature.WriteDateUseDateFormat);
System.out.println(json);

JSON格式的输出结果中就包含了格式化后的时间信息:

{
  "dob": "2021-10-21 12:34:56",
  "id": 1,
  "name": "Tom"
}

3.处理枚举值

在Java中,枚举值通常需要在转换成JSON格式时进行处理。mybatisplusjson提供了方便的工具方法,可以轻松地对枚举值进行处理,例如:

public enum GenderEnum {
    MALE("男"), FEMALE("女");
    private String desc;
    private GenderEnum(String desc){
        this.desc=desc;
    }
    public String getDesc(){
        return desc;
    }
}
public class User {
    private int id;
    private String name;
    private GenderEnum gender;
    //省略getter和setter
}
User user=new User();
user.setId(1);
user.setName("Tom");
user.setGender(GenderEnum.MALE);
String json=JSONUtil.toJsonStr(user,
        SerializerFeature.WriteEnumUsingToString);
System.out.println(json);

JSON格式的输出结果中就包含了枚举值的信息:

{
  "gender": "MALE",
  "id": 1,
  "name": "Tom"
}

四、mybatisplusjson的性能优化

在大规模数据量情况下,mybatisplusjson的性能可能存在瓶颈。为了提高mybatisplusjson的性能,我们可以使用以下优化技巧。

1.使用对象池

在进行频繁的对象创建和销毁操作时,使用对象池可以避免频繁的GC操作,提高程序的性能。mybatisplusjson提供了对象池的实现,具体使用方法可以参考官方文档。

2.关闭JavaBean属性排序

mybatisplusjson默认会对JavaBean属性进行排序,以保证输出结果的一致性。但是这会增加序列化的时间和开销。如果对输出结果的一致性要求不高,可以关闭JavaBean属性排序,以提高性能。如下所示:

String json=JSONUtil.toJsonStr(user,
        SerializerFeature.DisableCircularReferenceDetect,
        SerializerFeature.SortField);

3.按需优化开关

mybatisplusjson中提供了多种序列化选项,可以按需开启或关闭,以减少不必要的开销。例如,FastJson提供了一些开关,可以控制是否格式化输出,是否输出引号等。按照实际需要开启或关闭一些选项,可以提高mybatisplusjson的性能。

mybatisplusjson

相关文章

linux查看最大内存数,linux查看内存总量以及使用大小

linux查看最大内存数,linux查看内存总量以及使用大小

2023-11-25
linuxssh连接被拒绝,linux ssh连接拒绝

linuxssh连接被拒绝,linux ssh连接拒绝

2023-11-25
linux不支持多用户,linux不支持多用户吗

linux不支持多用户,linux不支持多用户吗

2023-11-25
windows下写linux代码编辑器,windows编辑linux文件

windows下写linux代码编辑器,windows编辑linux文件

2023-11-25

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31