mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
test: 添加 fastjson 序列化测试。
This commit is contained in:
parent
1e603a0350
commit
9eb8e2da4f
@ -29,6 +29,12 @@
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
<artifactId>fastjson2</artifactId>
|
||||
<version>2.0.32</version>
|
||||
</dependency>
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
|
||||
|
||||
@ -16,6 +16,8 @@
|
||||
|
||||
package com.mybatisflex.test.common;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONWriter;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -23,7 +25,7 @@ import org.junit.jupiter.api.Test;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static com.mybatisflex.core.query.QueryMethods.case_;
|
||||
import static com.mybatisflex.core.query.QueryMethods.count;
|
||||
import static com.mybatisflex.core.query.QueryMethods.distinct;
|
||||
import static com.mybatisflex.test.model.table.RoleTableDef.ROLE;
|
||||
import static com.mybatisflex.test.model.table.UserRoleTableDef.USER_ROLE;
|
||||
@ -35,18 +37,27 @@ import static com.mybatisflex.test.model.table.UserTableDef.USER;
|
||||
*/
|
||||
class CloneTest {
|
||||
|
||||
@Test
|
||||
void test03() {
|
||||
String jsonString = JSON.toJSONString(newQueryWrapper(), JSONWriter.Feature.FieldBased, JSONWriter.Feature.ReferenceDetection);
|
||||
System.out.println(jsonString);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() {
|
||||
QueryWrapper queryWrapper = newQueryWrapper();
|
||||
Class<QueryWrapper> queryWrapperClass = QueryWrapper.class;
|
||||
int count = 10000;
|
||||
|
||||
/*
|
||||
* new: 50 ms
|
||||
* clone: 68 ms
|
||||
* serial: 2634 ms
|
||||
* new: 41ms
|
||||
* clone: 65ms
|
||||
* fastjson: 620ms
|
||||
* serial: 2003ms
|
||||
*/
|
||||
calcTime(count, "new", this::newQueryWrapper);
|
||||
calcTime(count, "clone", queryWrapper::clone);
|
||||
calcTime(count, "fastjson", () -> SerialUtil.cloneObject(queryWrapper, queryWrapperClass));
|
||||
calcTime(count, "serial", () -> SerialUtil.cloneObject(queryWrapper));
|
||||
}
|
||||
|
||||
@ -55,12 +66,16 @@ class CloneTest {
|
||||
QueryWrapper queryWrapper = newQueryWrapper();
|
||||
QueryWrapper queryWrapper1 = queryWrapper.clone();
|
||||
QueryWrapper queryWrapper2 = SerialUtil.cloneObject(queryWrapper);
|
||||
QueryWrapper queryWrapper3 = SerialUtil.cloneObject(queryWrapper, QueryWrapper.class);
|
||||
System.err.println(SerialUtil.toJSONString(queryWrapper));
|
||||
System.out.println(queryWrapper.toSQL());
|
||||
System.out.println(queryWrapper1.toSQL());
|
||||
System.out.println(queryWrapper2.toSQL());
|
||||
System.out.println(queryWrapper3.toSQL());
|
||||
|
||||
Assertions.assertEquals(queryWrapper.toSQL(), queryWrapper1.toSQL());
|
||||
Assertions.assertEquals(queryWrapper.toSQL(), queryWrapper2.toSQL());
|
||||
Assertions.assertEquals(queryWrapper.toSQL(), queryWrapper3.toSQL());
|
||||
}
|
||||
|
||||
private void calcTime(int count, String type, Supplier<QueryWrapper> supplier) {
|
||||
@ -74,13 +89,13 @@ class CloneTest {
|
||||
|
||||
private QueryWrapper newQueryWrapper() {
|
||||
return QueryWrapper.create()
|
||||
.select(case_()
|
||||
.select(count(distinct(USER.USER_ID))/*case_()
|
||||
.when(USER.USER_ID.eq(3)).then("x3")
|
||||
.when(USER.USER_ID.eq(5)).then("x4")
|
||||
.end(),
|
||||
distinct(USER.USER_ID.add(4)),
|
||||
USER.USER_NAME,
|
||||
ROLE.ALL_COLUMNS)
|
||||
ROLE.ALL_COLUMNS*/)
|
||||
.from(USER.as("u"))
|
||||
.leftJoin(USER_ROLE).as("ur").on(USER_ROLE.USER_ID.eq(USER.USER_ID))
|
||||
.leftJoin(ROLE).as("r").on(USER_ROLE.ROLE_ID.eq(ROLE.ROLE_ID))
|
||||
|
||||
@ -16,6 +16,10 @@
|
||||
|
||||
package com.mybatisflex.test.common;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONReader;
|
||||
import com.alibaba.fastjson2.JSONWriter;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
@ -51,4 +55,20 @@ public class SerialUtil {
|
||||
return (T) readObject(writeObject(obj));
|
||||
}
|
||||
|
||||
public static String toJSONString(Object obj) {
|
||||
return JSON.toJSONString(obj, JSONWriter.Feature.FieldBased,
|
||||
JSONWriter.Feature.WriteClassName,
|
||||
JSONWriter.Feature.NotWriteRootClassName,
|
||||
JSONWriter.Feature.ReferenceDetection);
|
||||
}
|
||||
|
||||
public static <T> T parseObject(String str, Class<T> tClass) {
|
||||
return JSON.parseObject(str, tClass, JSONReader.Feature.FieldBased,
|
||||
JSONReader.Feature.SupportClassForName);
|
||||
}
|
||||
|
||||
public static <T> T cloneObject(Object obj, Class<T> tClass) {
|
||||
return parseObject(toJSONString(obj), tClass);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user