Skip to content

Commit be0c559

Browse files
committed
update: 添加JsonAdaptor的测试代码,更新pom文件中测试用的JDBC部分
1 parent 014b7dc commit be0c559

8 files changed

+247
-10
lines changed

pom.xml

+10-4
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,19 @@
8888
<dependency>
8989
<groupId>org.postgresql</groupId>
9090
<artifactId>postgresql</artifactId>
91-
<version>9.4-1206-jdbc41</version>
91+
<version>42.7.4</version>
9292
<scope>test</scope>
9393
</dependency>
9494
<dependency>
95-
<groupId>mysql</groupId>
96-
<artifactId>mysql-connector-java</artifactId>
97-
<version>8.0.21</version>
95+
<groupId>com.mysql</groupId>
96+
<artifactId>mysql-connector-j</artifactId>
97+
<version>8.2.0</version>
98+
<scope>test</scope>
99+
</dependency>
100+
<dependency>
101+
<groupId>org.mariadb.jdbc</groupId>
102+
<artifactId>mariadb-java-client</artifactId>
103+
<version>3.4.1</version>
98104
<scope>test</scope>
99105
</dependency>
100106
<dependency>

test/org/nutz/dao/test/normal/mysql/AllMysqlTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
import org.junit.runners.Suite;
55

66
@RunWith(Suite.class)
7-
@Suite.SuiteClasses({MysqlJsonTest.class})
7+
@Suite.SuiteClasses({MysqlJsonTest.class, MysqlJsonAdaptorTest.class})
88
public class AllMysqlTest {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.nutz.dao.test.normal.mysql;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.math.BigDecimal;
6+
7+
import org.junit.Test;
8+
import org.nutz.dao.Cnd;
9+
import org.nutz.dao.test.DaoCase;
10+
import org.nutz.json.Json;
11+
import org.nutz.json.JsonFormat;
12+
13+
public class MysqlJsonAdaptorTest extends DaoCase {
14+
15+
@Override
16+
protected void before() {
17+
if (!dao.meta().isMySql()) {
18+
return;
19+
}
20+
dao.create(MysqlJsonAdaptorTestBean.class, true);
21+
}
22+
23+
@Test
24+
public void adapotor() {
25+
if (!dao.meta().isMySql()) {
26+
return;
27+
}
28+
29+
MysqlJsonAdaptorTestBean testBean = new MysqlJsonAdaptorTestBean();
30+
StudentResult result = new StudentResult();
31+
result.setPhysics(new BigDecimal("100"));
32+
testBean.setNoneAdaptor(result);
33+
testBean.setJsonAdaptor(result);
34+
testBean.setJsonCompactAdaptor(result);
35+
testBean.setJsonTidyAdaptor(result);
36+
37+
int insertId = dao.insert(testBean).getId();
38+
39+
org.nutz.dao.entity.Record record = dao.fetch("t_mysql_json_adaptor_test_bean", Cnd.where("id","=",insertId));
40+
// mysql 在保存 json 格式字段的时候会自动格式化该字段的值
41+
// mariadb 的话就没问题
42+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("noneAdaptor"));
43+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("noneAdaptor"));
44+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("jsonAdaptor"));
45+
assertEquals(Json.toJson(result, JsonFormat.compact()), record.getString("jsonCompactAdaptor"));
46+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("jsonTidyAdaptor"));
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.nutz.dao.test.normal.mysql;
2+
3+
import org.nutz.dao.entity.annotation.ColDefine;
4+
import org.nutz.dao.entity.annotation.ColType;
5+
import org.nutz.dao.entity.annotation.Id;
6+
import org.nutz.dao.entity.annotation.Table;
7+
import org.nutz.dao.impl.jdbc.mysql.MysqlJsonAdaptor;
8+
import org.nutz.dao.impl.jdbc.mysql.MysqlJsonCompactAdaptor;
9+
import org.nutz.dao.impl.jdbc.mysql.MysqlJsonTidyAdaptor;
10+
11+
@Table("t_mysql_json_adaptor_test_bean")
12+
public class MysqlJsonAdaptorTestBean {
13+
14+
@Id
15+
private int id;
16+
17+
@ColDefine(customType = "json", type = ColType.MYSQL_JSON)
18+
private StudentResult noneAdaptor;
19+
20+
@ColDefine(customType = "json", type = ColType.MYSQL_JSON, adaptor = MysqlJsonAdaptor.class)
21+
private StudentResult jsonAdaptor;
22+
23+
@ColDefine(customType = "json", type = ColType.MYSQL_JSON, adaptor = MysqlJsonCompactAdaptor.class)
24+
private StudentResult jsonCompactAdaptor;
25+
26+
@ColDefine(customType = "json", type = ColType.MYSQL_JSON, adaptor = MysqlJsonTidyAdaptor.class)
27+
private StudentResult jsonTidyAdaptor;
28+
29+
public int getId() {
30+
return id;
31+
}
32+
33+
public void setId(int id) {
34+
this.id = id;
35+
}
36+
37+
public StudentResult getNoneAdaptor() {
38+
return noneAdaptor;
39+
}
40+
41+
public void setNoneAdaptor(StudentResult noneAdaptor) {
42+
this.noneAdaptor = noneAdaptor;
43+
}
44+
45+
public StudentResult getJsonAdaptor() {
46+
return jsonAdaptor;
47+
}
48+
49+
public void setJsonAdaptor(StudentResult jsonAdaptor) {
50+
this.jsonAdaptor = jsonAdaptor;
51+
}
52+
53+
public StudentResult getJsonCompactAdaptor() {
54+
return jsonCompactAdaptor;
55+
}
56+
57+
public void setJsonCompactAdaptor(StudentResult jsonCompactAdaptor) {
58+
this.jsonCompactAdaptor = jsonCompactAdaptor;
59+
}
60+
61+
public StudentResult getJsonTidyAdaptor() {
62+
return jsonTidyAdaptor;
63+
}
64+
65+
public void setJsonTidyAdaptor(StudentResult jsonTidyAdaptor) {
66+
this.jsonTidyAdaptor = jsonTidyAdaptor;
67+
}
68+
}

test/org/nutz/dao/test/normal/psql/AllPsqlTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
import org.junit.runners.Suite;
55

66
@RunWith(Suite.class)
7-
@Suite.SuiteClasses({PsqlJsonTest.class, PsqlArrayTest.class})
7+
@Suite.SuiteClasses({PsqlJsonTest.class, PsqlArrayTest.class, PsqlJsonAdaptorTest.class})
88
public class AllPsqlTest {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.nutz.dao.test.normal.psql;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.math.BigDecimal;
6+
7+
import org.junit.Test;
8+
import org.nutz.dao.Cnd;
9+
import org.nutz.dao.test.DaoCase;
10+
import org.nutz.json.Json;
11+
import org.nutz.json.JsonFormat;
12+
13+
public class PsqlJsonAdaptorTest extends DaoCase {
14+
15+
@Override
16+
protected void before() {
17+
if (!dao.meta().isPostgresql()) {
18+
return;
19+
}
20+
dao.create(PsqlJsonAdaptorTestBean.class, true);
21+
}
22+
23+
@Test
24+
public void adapotor() {
25+
if (!dao.meta().isPostgresql()) {
26+
return;
27+
}
28+
29+
PsqlJsonAdaptorTestBean testBean = new PsqlJsonAdaptorTestBean();
30+
org.nutz.dao.test.normal.psql.StudentResult result = new StudentResult();
31+
result.setPhysics(new BigDecimal("100"));
32+
testBean.setNoneAdaptor(result);
33+
testBean.setJsonAdaptor(result);
34+
testBean.setJsonCompactAdaptor(result);
35+
testBean.setJsonTidyAdaptor(result);
36+
37+
int insertId = dao.insert(testBean).getId();
38+
39+
org.nutz.dao.entity.Record record = dao.fetch("t_psql_json_adaptor_test_bean", Cnd.where("id","=",insertId));
40+
// 设置成 jsonb 格式的时候会自动格式化该字段的值
41+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("noneAdaptor"));
42+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("noneAdaptor"));
43+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("jsonAdaptor"));
44+
assertEquals(Json.toJson(result, JsonFormat.compact()), record.getString("jsonCompactAdaptor"));
45+
assertEquals(Json.toJson(result, JsonFormat.tidy()), record.getString("jsonTidyAdaptor"));
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.nutz.dao.test.normal.psql;
2+
3+
import org.nutz.dao.entity.annotation.ColDefine;
4+
import org.nutz.dao.entity.annotation.ColType;
5+
import org.nutz.dao.entity.annotation.Id;
6+
import org.nutz.dao.entity.annotation.Table;
7+
import org.nutz.dao.impl.jdbc.psql.PsqlJsonAdaptor;
8+
import org.nutz.dao.impl.jdbc.psql.PsqlJsonCompactAdaptor;
9+
import org.nutz.dao.impl.jdbc.psql.PsqlJsonTidyAdaptor;
10+
11+
@Table("t_psql_json_adaptor_test_bean")
12+
public class PsqlJsonAdaptorTestBean {
13+
14+
@Id
15+
private int id;
16+
17+
@ColDefine(customType = "jsonb", type = ColType.PSQL_JSON)
18+
private StudentResult noneAdaptor;
19+
20+
@ColDefine(customType = "json", type = ColType.PSQL_JSON, adaptor = PsqlJsonAdaptor.class)
21+
private StudentResult jsonAdaptor;
22+
23+
@ColDefine(customType = "json", type = ColType.PSQL_JSON, adaptor = PsqlJsonCompactAdaptor.class)
24+
private StudentResult jsonCompactAdaptor;
25+
26+
@ColDefine(customType = "json", type = ColType.PSQL_JSON, adaptor = PsqlJsonTidyAdaptor.class)
27+
private StudentResult jsonTidyAdaptor;
28+
29+
public int getId() {
30+
return id;
31+
}
32+
33+
public void setId(int id) {
34+
this.id = id;
35+
}
36+
37+
public org.nutz.dao.test.normal.psql.StudentResult getNoneAdaptor() {
38+
return noneAdaptor;
39+
}
40+
41+
public void setNoneAdaptor(StudentResult noneAdaptor) {
42+
this.noneAdaptor = noneAdaptor;
43+
}
44+
45+
public StudentResult getJsonAdaptor() {
46+
return jsonAdaptor;
47+
}
48+
49+
public void setJsonAdaptor(StudentResult jsonAdaptor) {
50+
this.jsonAdaptor = jsonAdaptor;
51+
}
52+
53+
public StudentResult getJsonCompactAdaptor() {
54+
return jsonCompactAdaptor;
55+
}
56+
57+
public void setJsonCompactAdaptor(StudentResult jsonCompactAdaptor) {
58+
this.jsonCompactAdaptor = jsonCompactAdaptor;
59+
}
60+
61+
public StudentResult getJsonTidyAdaptor() {
62+
return jsonTidyAdaptor;
63+
}
64+
65+
public void setJsonTidyAdaptor(StudentResult jsonTidyAdaptor) {
66+
this.jsonTidyAdaptor = jsonTidyAdaptor;
67+
}
68+
}

test/tmpl.nutz-test.properties

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
driver=com.mysql.jdbc.Driver
1+
driver=com.mysql.cj.jdbc.Driver
22
#driver=org.mariadb.jdbc.Driver
3-
url=jdbc:mysql://127.0.0.1/nutztest?zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
3+
url=jdbc:mysql://127.0.0.1:3306/nutztest?zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
44
username=root
55
password=root
66

@@ -21,7 +21,7 @@ password=root
2121
#url=jdbc:h2:mem:
2222

2323
#driver=org.postgresql.Driver
24-
#url=jdbc:postgresql://127.0.0.1:5433/nutztest
24+
#url=jdbc:postgresql://127.0.0.1:5432/nutztest
2525
#username=postgres
2626
#password=root
2727
#validationQuery=select 1
@@ -33,4 +33,4 @@ password=root
3333
#driver=org.sqlite.JDBC
3434
#url=jdbc:sqlite:nutz.db
3535
#username=root
36-
#password=root
36+
#password=root

0 commit comments

Comments
 (0)