From 4ee81626d68a4e3ea8102dfd5fef74c4a49ac857 Mon Sep 17 00:00:00 2001
From: lorne <1991wangliang@gmail.com>
Date: Sat, 18 Apr 2020 12:37:27 +0800
Subject: [PATCH 01/25] Update readme.md
---
readme.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/readme.md b/readme.md
index c954310..4b0c7a9 100644
--- a/readme.md
+++ b/readme.md
@@ -1,4 +1,4 @@
-[](https://travis-ci.org/codingapi/simple-mybatis) [](https://codecov.io/gh/codingapi/simple-mybatis)
+[](https://travis-ci.org/codingapi/simple-mybatis) [](https://maven-badges.herokuapp.com/maven-central/com.codingapi/simple-mybatis) [](https://codecov.io/gh/codingapi/simple-mybatis)
# simple-mybatis
## 前言
@@ -16,7 +16,7 @@
com.codingapi
simple-mybatis
- 1.0.0
+ ${last.version}
```
From 1292789af634f4be6be6028ba17cb60f78522d2b Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sat, 18 Apr 2020 21:55:06 +0800
Subject: [PATCH 02/25] test
---
pom.xml | 7 +++
.../codingapi/simplemybatis/entity/Demo.java | 50 +++++++++++++++++++
.../simplemybatis/parser/SqlParserDemo.java | 25 ++++++++++
3 files changed, 82 insertions(+)
create mode 100644 src/test/java/com/codingapi/simplemybatis/entity/Demo.java
create mode 100644 src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
diff --git a/pom.xml b/pom.xml
index b554766..85b792d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,6 +64,13 @@
commons-lang3
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.6.2
+ test
+
+
diff --git a/src/test/java/com/codingapi/simplemybatis/entity/Demo.java b/src/test/java/com/codingapi/simplemybatis/entity/Demo.java
new file mode 100644
index 0000000..31a1f37
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/entity/Demo.java
@@ -0,0 +1,50 @@
+package com.codingapi.simplemybatis.entity;
+
+import javax.persistence.*;
+
+@Table(name = "t_test")
+public class Demo {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String name;
+
+ @Column(name = "s_demo")
+ private String test;
+
+ private boolean flag;
+
+ public boolean isFlag() {
+ return flag;
+ }
+
+ public void setFlag(boolean flag) {
+ this.flag = flag;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTest() {
+ return test;
+ }
+
+ public void setTest(String test) {
+ this.test = test;
+ }
+}
diff --git a/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java b/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
new file mode 100644
index 0000000..588053c
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
@@ -0,0 +1,25 @@
+package com.codingapi.simplemybatis.parser;
+
+import com.codingapi.simplemybatis.entity.Demo;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.InvocationTargetException;
+
+
+public class SqlParserDemo {
+
+ @Test
+ public void save() throws InvocationTargetException, IllegalAccessException {
+ Demo demo = new Demo();
+ demo.setName("test");
+ demo.setFlag(false);
+ demo.setTest("123");
+
+ TableParser tableParser = new TableParser(demo.getClass());
+ tableParser.parser(demo);
+ SqlParser sqlParser = new SqlParser(tableParser.getTableInfo());
+ String sql = sqlParser.createInsertSql();
+ System.out.println(sql);
+
+ }
+}
From 3f5dbe15c26403b0567a99cdea23381cba1c18f9 Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sat, 18 Apr 2020 22:21:01 +0800
Subject: [PATCH 03/25] test
---
.../simplemybatis/parser/SqlParserDemo.java | 25 -----
.../simplemybatis/parser/SqlParserTest.java | 91 +++++++++++++++++++
2 files changed, 91 insertions(+), 25 deletions(-)
delete mode 100644 src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
create mode 100644 src/test/java/com/codingapi/simplemybatis/parser/SqlParserTest.java
diff --git a/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java b/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
deleted file mode 100644
index 588053c..0000000
--- a/src/test/java/com/codingapi/simplemybatis/parser/SqlParserDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.codingapi.simplemybatis.parser;
-
-import com.codingapi.simplemybatis.entity.Demo;
-import org.junit.jupiter.api.Test;
-
-import java.lang.reflect.InvocationTargetException;
-
-
-public class SqlParserDemo {
-
- @Test
- public void save() throws InvocationTargetException, IllegalAccessException {
- Demo demo = new Demo();
- demo.setName("test");
- demo.setFlag(false);
- demo.setTest("123");
-
- TableParser tableParser = new TableParser(demo.getClass());
- tableParser.parser(demo);
- SqlParser sqlParser = new SqlParser(tableParser.getTableInfo());
- String sql = sqlParser.createInsertSql();
- System.out.println(sql);
-
- }
-}
diff --git a/src/test/java/com/codingapi/simplemybatis/parser/SqlParserTest.java b/src/test/java/com/codingapi/simplemybatis/parser/SqlParserTest.java
new file mode 100644
index 0000000..9e491d4
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/parser/SqlParserTest.java
@@ -0,0 +1,91 @@
+package com.codingapi.simplemybatis.parser;
+
+import com.codingapi.simplemybatis.entity.Demo;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+class SqlParserTest {
+
+
+ private Demo createDemo(){
+ Demo demo = new Demo();
+ demo.setId(1L);
+ demo.setName("test");
+ demo.setFlag(false);
+ demo.setTest("123");
+ return demo;
+ }
+
+ private SqlParser createSqlParser() throws InvocationTargetException, IllegalAccessException {
+ Demo demo = createDemo();
+ TableParser tableParser = new TableParser(demo.getClass());
+ tableParser.parser(demo);
+ return new SqlParser(tableParser.getTableInfo());
+ }
+
+ @Test
+ void createInsertSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createInsertSql();
+ System.out.println(sql);
+ }
+
+
+
+ @Test
+ void createSelectAll() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createSelectAll();
+ System.out.println(sql);
+ }
+
+
+
+ @Test
+ void createUpdateSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createUpdateSql();
+ System.out.println(sql);
+ }
+
+ @Test
+ void createDeleteSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createDeleteSql();
+ System.out.println(sql);
+ }
+
+ @Test
+ void createInsertAllSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ List list = new ArrayList<>();
+ list.add(createDemo());
+ list.add(createDemo());
+ String sql = sqlParser.createInsertAllSql(list);
+ System.out.println(sql);
+ }
+
+ @Test
+ void createDeleteAllSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createDeleteAllSql();
+ System.out.println(sql);
+ }
+
+ @Test
+ void createDeleteAllByIdSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createDeleteAllByIdSql();
+ System.out.println(sql);
+ }
+
+ @Test
+ void createGetByIdSql() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createGetByIdSql();
+ System.out.println(sql);
+ }
+}
\ No newline at end of file
From 93d880c3017d9a8555d38992e57e85355c7303ba Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sat, 18 Apr 2020 23:28:18 +0800
Subject: [PATCH 04/25] test
---
pom.xml | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 85b792d..993b151 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
1.8
1.8
3.0.1
- 3.6.0
+ 3.8.1
1.6.3
1.2.7
@@ -121,6 +121,7 @@
org.apache.maven.plugins
maven-compiler-plugin
+ ${maven-compiler-plugin.version}
${maven.compile.source}
${maven.compile.target}
@@ -129,6 +130,10 @@
+
+ maven-surefire-plugin
+ 2.22.2
+
@@ -153,6 +158,7 @@
org.jacoco
jacoco-maven-plugin
+ 0.8.2
@@ -173,6 +179,7 @@
org.openclover
clover-maven-plugin
+ 4.3.1
true
true
From a956c8d2b743623b59bc7b7b99e825d8cb8c2d0b Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sat, 18 Apr 2020 23:54:15 +0800
Subject: [PATCH 05/25] test
---
pom.xml | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 993b151..8303bdd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,8 @@
1.9.3
3.10
28.1-jre
+
+ 5.6.2
@@ -67,7 +69,13 @@
org.junit.jupiter
junit-jupiter-api
- 5.6.2
+ ${junit.jupiter.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit.jupiter.version}
test
@@ -126,11 +134,11 @@
${maven.compile.source}
${maven.compile.target}
${project.build.sourceEncoding}
- -Xlint:deprecation
+ org.apache.maven.plugins
maven-surefire-plugin
2.22.2
@@ -158,7 +166,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.2
+ 0.8.5
@@ -179,7 +187,7 @@
org.openclover
clover-maven-plugin
- 4.3.1
+ 4.4.1
true
true
From ecdef3671920a0d2113b9793f2ec7a586dfeb192 Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sun, 19 Apr 2020 00:13:58 +0800
Subject: [PATCH 06/25] for
https://stackoverflow.com/questions/49154559/test-failing-when-using-jacoco
---
.../java/com/codingapi/simplemybatis/parser/TableParser.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/com/codingapi/simplemybatis/parser/TableParser.java b/src/main/java/com/codingapi/simplemybatis/parser/TableParser.java
index 460e775..0b135fa 100644
--- a/src/main/java/com/codingapi/simplemybatis/parser/TableParser.java
+++ b/src/main/java/com/codingapi/simplemybatis/parser/TableParser.java
@@ -50,6 +50,9 @@ public void parser(Object obj) throws IllegalAccessException, InvocationTargetEx
private void loadColumnNames(Object obj) throws IllegalAccessException, InvocationTargetException {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
+ if(field.isSynthetic()){
+ continue;
+ }
Transient transientField = field.getAnnotation(Transient.class);
if (transientField != null) {
continue;
From f62b96931e7ab9d369b8e95152ef9fce61bcdfdf Mon Sep 17 00:00:00 2001
From: gitee-wangliang <1991wangliang@gmail.com>
Date: Sun, 19 Apr 2020 08:59:46 +0800
Subject: [PATCH 07/25] fix java.util.ConcurrentModificationException bug.
---
.../simplemybatis/utils/MapCamelUtils.java | 3 +-
.../simplemybatis/entity/DemoView.java | 33 ++++++++++
.../simplemybatis/query/QueryTest.java | 63 +++++++++++++++++++
.../simplemybatis/utils/MapBeanUtilsTest.java | 22 +++++++
.../utils/MapCamelUtilsTest.java | 19 ++++++
5 files changed, 139 insertions(+), 1 deletion(-)
create mode 100644 src/test/java/com/codingapi/simplemybatis/entity/DemoView.java
create mode 100644 src/test/java/com/codingapi/simplemybatis/query/QueryTest.java
create mode 100644 src/test/java/com/codingapi/simplemybatis/utils/MapBeanUtilsTest.java
create mode 100644 src/test/java/com/codingapi/simplemybatis/utils/MapCamelUtilsTest.java
diff --git a/src/main/java/com/codingapi/simplemybatis/utils/MapCamelUtils.java b/src/main/java/com/codingapi/simplemybatis/utils/MapCamelUtils.java
index 9249f5f..1d00b7a 100644
--- a/src/main/java/com/codingapi/simplemybatis/utils/MapCamelUtils.java
+++ b/src/main/java/com/codingapi/simplemybatis/utils/MapCamelUtils.java
@@ -1,5 +1,6 @@
package com.codingapi.simplemybatis.utils;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -11,7 +12,7 @@
public class MapCamelUtils {
public static void camelMap(Map item) {
- Set keys = item.keySet();
+ Set keys = new HashSet<>(item.keySet());
for (String key : keys) {
String newKey = StringCharacterUtils.underlineToCamel(key);
if (!newKey.equals(key)) {
diff --git a/src/test/java/com/codingapi/simplemybatis/entity/DemoView.java b/src/test/java/com/codingapi/simplemybatis/entity/DemoView.java
new file mode 100644
index 0000000..7af0fd8
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/entity/DemoView.java
@@ -0,0 +1,33 @@
+package com.codingapi.simplemybatis.entity;
+
+public class DemoView {
+
+ private String content;
+ private String title;
+ private String createTime;
+
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+}
diff --git a/src/test/java/com/codingapi/simplemybatis/query/QueryTest.java b/src/test/java/com/codingapi/simplemybatis/query/QueryTest.java
new file mode 100644
index 0000000..a0ceb67
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/query/QueryTest.java
@@ -0,0 +1,63 @@
+package com.codingapi.simplemybatis.query;
+
+import com.codingapi.simplemybatis.entity.Demo;
+import com.codingapi.simplemybatis.parser.SqlParser;
+import com.codingapi.simplemybatis.parser.TableParser;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.InvocationTargetException;
+
+class QueryTest {
+
+
+ private Demo createDemo(){
+ Demo demo = new Demo();
+ demo.setId(1L);
+ demo.setName("test");
+ demo.setFlag(false);
+ demo.setTest("123");
+ return demo;
+ }
+
+ private SqlParser createSqlParser() throws InvocationTargetException, IllegalAccessException {
+ Demo demo = createDemo();
+ TableParser tableParser = new TableParser(demo.getClass());
+ tableParser.parser(demo);
+ return new SqlParser(tableParser.getTableInfo());
+ }
+
+
+ @Test
+ void query() throws InvocationTargetException, IllegalAccessException {
+ SqlParser sqlParser = createSqlParser();
+ String sql = sqlParser.createQuery(QueryBuilder.Build()
+ .where()
+ .equal("name","hello")
+ .and()
+ .date("create_time","2020-01-12")
+ .or()
+ .in("id",1,2,3,4,5)
+ .orderBy("name desc")
+ .builder());
+ System.out.println(sql);
+ }
+
+
+ @Test
+ void queryView() throws InvocationTargetException, IllegalAccessException {
+ Query query = QueryBuilder.Build()
+ .select("select * from t_demo d join t_test t on d.id = t.demo_id ")
+ .where()
+ .equal("d.name","hello")
+ .and()
+ .date("d.create_time","2020-01-12")
+ .or()
+ .in("d.id",1,2,3,4,5)
+ .orderBy("d.name desc")
+ .builder();
+ QuerySqlBuilder querySqlBuilder = new QuerySqlBuilder(query.getSelect(),null,query);
+ String sql = querySqlBuilder.getSql();
+ System.out.println(sql);
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/com/codingapi/simplemybatis/utils/MapBeanUtilsTest.java b/src/test/java/com/codingapi/simplemybatis/utils/MapBeanUtilsTest.java
new file mode 100644
index 0000000..a30bb67
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/utils/MapBeanUtilsTest.java
@@ -0,0 +1,22 @@
+package com.codingapi.simplemybatis.utils;
+
+import com.codingapi.simplemybatis.entity.DemoView;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class MapBeanUtilsTest {
+
+ @Test
+ void toBean() {
+ Map map = new HashMap<>();
+ map.put("create_time","20200202");
+ map.put("name","123");
+ MapCamelUtils.camelMap(map);
+ DemoView demoView = MapBeanUtils.toBean(DemoView.class,map);
+ assertTrue("20200202".equals(demoView.getCreateTime()),"creatTime not val");
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/codingapi/simplemybatis/utils/MapCamelUtilsTest.java b/src/test/java/com/codingapi/simplemybatis/utils/MapCamelUtilsTest.java
new file mode 100644
index 0000000..7792005
--- /dev/null
+++ b/src/test/java/com/codingapi/simplemybatis/utils/MapCamelUtilsTest.java
@@ -0,0 +1,19 @@
+package com.codingapi.simplemybatis.utils;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class MapCamelUtilsTest {
+
+ @Test
+ void camelMap() {
+ Map map = new HashMap<>();
+ map.put("title_name","123");
+ MapCamelUtils.camelMap(map);
+ assertTrue("123".equals(map.get("titleName")),"titleName not value");
+ }
+}
\ No newline at end of file
From ee69b91d63bc1e71a821c57dbdc679c0ff22b842 Mon Sep 17 00:00:00 2001
From: wangliang <1991wangliang@gmail.com>
Date: Sun, 19 Apr 2020 09:07:28 +0800
Subject: [PATCH 08/25] ossrh
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 8303bdd..6318853 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.codingapi
simple-mybatis
- 1.0.0
+ 1.1.0
simple-mybatis
https://github.com/codingapi/simple-mybatis
simple mybatis project for Spring Boot
From 26424cf2d2605c091ce36fcb0bc9df23807d7a76 Mon Sep 17 00:00:00 2001
From: wangliang <1991wangliang@gmail.com>
Date: Mon, 27 Apr 2020 20:24:29 +0800
Subject: [PATCH 09/25] view query
---
pom.xml | 2 +-
.../simplemybatis/mapper/ViewMapper.java | 46 +++++++++++++++++++
.../simplemybatis/query/QueryBuilder.java | 9 ++--
.../query/QueryConditionParser.java | 1 +
.../simplemybatis/query/QueryParameter.java | 22 +++++++--
.../simplemybatis/query/QuerySqlBuilder.java | 7 ++-
.../query/parser/QueryCondition.java | 3 +-
.../simplemybatis/query/QueryTest.java | 3 +-
8 files changed, 82 insertions(+), 11 deletions(-)
create mode 100644 src/main/java/com/codingapi/simplemybatis/mapper/ViewMapper.java
diff --git a/pom.xml b/pom.xml
index 6318853..5bd57b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.codingapi
simple-mybatis
- 1.1.0
+ 1.1.1
simple-mybatis
https://github.com/codingapi/simple-mybatis
simple mybatis project for Spring Boot
diff --git a/src/main/java/com/codingapi/simplemybatis/mapper/ViewMapper.java b/src/main/java/com/codingapi/simplemybatis/mapper/ViewMapper.java
new file mode 100644
index 0000000..1729e57
--- /dev/null
+++ b/src/main/java/com/codingapi/simplemybatis/mapper/ViewMapper.java
@@ -0,0 +1,46 @@
+package com.codingapi.simplemybatis.mapper;
+
+import com.codingapi.simplemybatis.page.PageList;
+import com.codingapi.simplemybatis.page.PageRequest;
+import com.codingapi.simplemybatis.provider.QueryProvider;
+import com.codingapi.simplemybatis.query.Query;
+import com.codingapi.simplemybatis.utils.MapBeanUtils;
+import com.codingapi.simplemybatis.utils.MapCamelUtils;
+import com.github.pagehelper.PageHelper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.SelectProvider;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+/**
+ * @author lorne
+ * @date 2020/4/27
+ * @description
+ */
+public interface ViewMapper {
+
+ @SelectProvider(type = QueryProvider.class, method = "queryView")
+ List