diff --git a/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java b/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java index afe866a..6dcc563 100644 --- a/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java +++ b/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java @@ -77,4 +77,8 @@ public @interface Table { */ String tablesClassName() default "%S"; + /** + * 是否缓存 + */ + boolean cache() default true; } \ No newline at end of file diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java index 2e67929..74cbca8 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java @@ -341,10 +341,10 @@ class AptWrapperTest { " AND uc.del = false\n" + " AND (ua.id <= ? AND ub.id >= ?)"); - UserDtoCol tt = new UserDtoCol("tt"); - UserDOCol ua = new UserDOCol("ua"); - UserDOCol ub = new UserDOCol("ub"); - UserDOCol uc = new UserDOCol("uc"); + UserDtoCol tt = UserDtoCol.build("tt"); + UserDOCol ua = UserDOCol.build("ua"); + UserDOCol ub = UserDOCol.build("ub"); + UserDOCol uc = UserDOCol.build("uc"); AptQueryWrapper wrapper = new AptQueryWrapper<>(tt) .selectAll() @@ -387,10 +387,10 @@ class AptWrapperTest { " AND uc.del = false\n" + " AND (ua.head_img = tt.`name` AND tt.id = ua.id)"); - UserDOCol ut = new UserDOCol("tt"); - UserDOCol ua1 = new UserDOCol("ua"); - UserDOCol ub1 = new UserDOCol("ub"); - UserDOCol uc1 = new UserDOCol("uc"); + UserDOCol ut = UserDOCol.build("tt"); + UserDOCol ua1 = UserDOCol.build("ua"); + UserDOCol ub1 = UserDOCol.build("ub"); + UserDOCol uc1 = UserDOCol.build("uc"); AptQueryWrapper w = new AptQueryWrapper<>(ut) .selectAll() @@ -440,8 +440,8 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND (t.id > ?)"); - UserDOCol u = USERDO; - UserDOCol ua = new UserDOCol(); + UserDOCol u = USERDO; + UserDOCol ua = UserDOCol.build(); //自连接 AptQueryWrapper wrapper = new AptQueryWrapper<>(u) @@ -472,9 +472,9 @@ class AptWrapperTest { " LEFT JOIN `user` t2 ON (t2.id = t.update_by)\n" + "WHERE (t2.id = t.update_by AND t.id = t1.id)"); - UserDOCol uu = new UserDOCol(); - UserDOCol uua = new UserDOCol(); - UserDOCol uub = new UserDOCol(); + UserDOCol uu = UserDOCol.build(); + UserDOCol uua = UserDOCol.build(); + UserDOCol uub = UserDOCol.build(); //关联一张表多次 AptQueryWrapper w = new AptQueryWrapper<>(uu) @@ -534,9 +534,9 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND (t1.id <= ? AND t.id <= ?)"); - UserDOCol uuu = new UserDOCol(); - UserDOCol uuua = new UserDOCol(); - UserDOCol uuub = new UserDOCol(); + UserDOCol uuu = UserDOCol.build(); + UserDOCol uuua = UserDOCol.build(); + UserDOCol uuub = UserDOCol.build(); AptQueryWrapper wrapper1 = new AptQueryWrapper<>(uuu) .disableSubLogicDel() @@ -557,20 +557,20 @@ class AptWrapperTest { */ @Test void testLogicDel() { - UserDOCol u1 = new UserDOCol(); + UserDOCol u1 = UserDOCol.build(); List l1 = userMapper.selectJoinList(UserDTO.class, new AptQueryWrapper<>(u1)); assert l1.size() == 14; - UserDOCol u2 = new UserDOCol(); - AddressDOCol addr2 = new AddressDOCol(); + UserDOCol u2 = UserDOCol.build(); + AddressDOCol addr2 = AddressDOCol.build(); List l2 = userMapper.selectJoinList(UserDTO.class, new AptQueryWrapper<>(u2) .selectAll() .select(addr2.address) .leftJoin(addr2, addr2.userId, u2.id)); assert l2.size() == 10; - UserDOCol u3 = new UserDOCol(); - AddressDOCol addr3 = new AddressDOCol(); + UserDOCol u3 = UserDOCol.build(); + AddressDOCol addr3 = AddressDOCol.build(); List l3 = userMapper.selectJoinList(UserDTO.class, new AptQueryWrapper<>(u3) .disableSubLogicDel() .selectAll() @@ -578,8 +578,8 @@ class AptWrapperTest { .leftJoin(addr3, addr3.userId, u3.id)); assert l3.size() == 14 && l3.get(0).getAddressList().size() == 9; - UserDOCol u4 = new UserDOCol(); - AddressDOCol addr4 = new AddressDOCol(); + UserDOCol u4 = UserDOCol.build(); + AddressDOCol addr4 = AddressDOCol.build(); List l4 = userMapper.selectJoinList(UserDTO.class, new AptQueryWrapper<>(u4) .disableSubLogicDel() .selectAll() @@ -595,8 +595,8 @@ class AptWrapperTest { */ @Test void testAlias() { - UserDOCol u = new UserDOCol(); - UserDOCol uu = new UserDOCol(); + UserDOCol u = UserDOCol.build(); + UserDOCol uu = UserDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) // .disableSubLogicDel()//关闭副表逻辑删除 // .disableLogicDel()//关闭主表逻辑删除 @@ -616,8 +616,8 @@ class AptWrapperTest { void testObj() { ThreadLocalUtils.set("SELECT DISTINCT t.id FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del=false AND t1.del=false ORDER BY t.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .distinct() .select(u.id) @@ -651,8 +651,8 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND aa.del = false"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol("aa"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build("aa"); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) // .disableLogicDel()//关闭主表逻辑删除 .selectAll() @@ -666,9 +666,9 @@ class AptWrapperTest { @Test void testLabel() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol("t1"); - AddressDOCol addr2 = new AddressDOCol("t2"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build("t1"); + AddressDOCol addr2 = AddressDOCol.build("t2"); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .disableSubLogicDel() @@ -690,9 +690,9 @@ class AptWrapperTest { */ @Test void test1() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); Page page = new Page<>(1, 10); page.setSearchCount(false); @@ -735,8 +735,8 @@ class AptWrapperTest { "LEFT JOIN address t1 ON (t.id = t1.user_id AND t.id = t1.user_id) WHERE t.del = false AND t1.del = false AND " + "(t.id = ? AND (t.head_img = ? OR t1.user_id = ?) AND t.id = ?) ) TMP WHERE ROWNUM <=?) WHERE ROW_ID > ?"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); IPage page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, JoinWrappers.apt(u) .selectAll() @@ -758,8 +758,8 @@ class AptWrapperTest { */ @Test void test4() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectSum(u.id) @@ -777,7 +777,7 @@ class AptWrapperTest { @SneakyThrows void test8() throws BadSqlGrammarException { ThreadLocalUtils.set("SELECT t.`name` FROM `user` t WHERE t.del=false AND (t.`name` = ?)"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .select(u.name) .eq(u.name, "ref"); @@ -790,8 +790,8 @@ class AptWrapperTest { */ @Test void test7() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); List> list = userMapper.selectJoinMaps(JoinWrappers.apt(u) .selectAll() .select(addr.address) @@ -814,7 +814,7 @@ class AptWrapperTest { "SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id > ? AND t.id < ?)", "SELECT id, pid, `name`, `json`, sex, head_img, create_time, address_id, address_id2, del, create_by, update_by FROM `user` t WHERE t.del = false AND (t.id > ? AND t.id < ?)", "SELECT * FROM `user` t WHERE t.del=false AND (t.id > ? AND t.id < ?) "); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); List dos1 = userMapper.selectList(new AptQueryWrapper<>(u) .gt(u.id, 3) .lt(u.id, 8)); @@ -826,7 +826,7 @@ class AptWrapperTest { */ @Test void testGeneric() { - AddressDOCol addr = new AddressDOCol(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(addr) .selectAll() .le(addr.id, 10000) @@ -845,18 +845,18 @@ class AptWrapperTest { "SELECT COUNT( 1 ) FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) LEFT JOIN area t2 ON (t2.id = t1.area_id) WHERE t.del=false AND t1.del=false AND t2.del=false", "SELECT COUNT( * ) FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) LEFT JOIN area t2 ON (t2.id = t1.area_id) WHERE t.del=false AND t1.del=false AND t2.del=false", "SELECT COUNT( * ) AS total FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) LEFT JOIN area t2 ON (t2.id = t1.area_id) WHERE t.del=false AND t1.del=false AND t2.del=false"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .leftJoin(addr, addr.userId, u.id) .leftJoin(ar, ar.id, addr.areaId); Object integer = userMapper.selectCount(wrapper); ThreadLocalUtils.set("SELECT COUNT( * ) FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) LEFT JOIN area t2 ON (t2.id = t1.area_id) WHERE t.del=false AND t1.del=false AND t2.del=false"); - UserDOCol u1 = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol(); - AreaDOCol ar1 = new AreaDOCol(); + UserDOCol u1 = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build(); + AreaDOCol ar1 = AreaDOCol.build(); AptQueryWrapper wrapper1 = new AptQueryWrapper<>(u1) .leftJoin(addr1, addr1.userId, u1.id) .leftJoin(ar1, ar1.id, addr1.areaId); @@ -872,9 +872,9 @@ class AptWrapperTest { ThreadLocalUtils.set("SELECT t.id FROM (SELECT * FROM `user`) t LEFT JOIN (SELECT * FROM address) t1 ON " + "(t1.user_id = t.id) LEFT JOIN area t2 ON (t2.id = t1.area_id) WHERE t.del = false AND t1.del = false " + "AND t2.del = false AND (t.id <= ?) ORDER BY t.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .select(u.id) @@ -925,9 +925,9 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND (t.id <= ?)\n" + "ORDER BY t.id DESC\n"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .logicDelToOn() .selectAll() @@ -978,9 +978,9 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND (t.id <= ?)\n" + "ORDER BY t.id DESC\n"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .logicDelToOn() @@ -1001,9 +1001,9 @@ class AptWrapperTest { @Test void joinRandomMap() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .logicDelToOn() .selectAll() @@ -1028,9 +1028,9 @@ class AptWrapperTest { @Test void joinRandomMap111() { ThreadLocalUtils.set("SELECT t.id,t.user_id,t.area_id,t.tel,t.address,t.del FROM address t LEFT JOIN `user` t1 ON (t1.address_id = t.id) LEFT JOIN `user` t2 ON (t2.pid = t1.id) WHERE t.del=false AND t1.del=false AND t2.del=false"); - UserDOCol u = new UserDOCol(); - UserDOCol u1 = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + UserDOCol u1 = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(addr) .selectAll() .leftJoin(u, u.addressId, addr.id) @@ -1045,8 +1045,8 @@ class AptWrapperTest { @Test void joinOwn() { ThreadLocalUtils.set("SELECT t.id,t.pid,t.`name`,t.`json`,t.sex,t.head_img,t.create_time,t.address_id,t.address_id2,t.del,t.create_by,t.update_by FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del=false AND t1.del=false AND (t1.id = t1.id)"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() .leftJoin(addr, addr.userId, u.id) @@ -1062,8 +1062,8 @@ class AptWrapperTest { void joinOwn1() { ThreadLocalUtils.set("SELECT t.id,t.pid,t.`name`,t.`json`,t.sex,t.head_img,t.create_time,t.address_id,t.address_id2,t.del,t.create_by,t.update_by FROM `user` t " + "LEFT JOIN address aaa ON (aaa.user_id = t.id) WHERE t.del=false AND aaa.del=false AND (aaa.id = t.id AND aaa.id = aaa.id)"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol("aaa"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build("aaa"); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() .leftJoin(addr, addr.userId, u.id) @@ -1071,8 +1071,6 @@ class AptWrapperTest { .eq(addr.id, addr.id); List addressDOS = wrapper.list(); } -//执行sql: SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t LEFT JOIN address aaa ON (aaa.user_id = aaa.id) WHERE t.del = false AND aaa.del = false AND (aaa.id = t.id AND aaa.id = aaa.id) -//预期sql: SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t LEFT JOIN address aaa ON (aaa.user_id = t.id) WHERE t.del=false AND aaa.del=false AND (aaa.id = t.id AND aaa.id = aaa.id) /** * 同一个类字段比较 @@ -1087,7 +1085,7 @@ class AptWrapperTest { ThreadLocalUtils.set("SELECT id,user_id,name FROM order_t t", "SELECT id,user_id,name FROM order_t t"); } - OrderDOCol o = new OrderDOCol(); + OrderDOCol o = OrderDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(o); List list = wrapper.list(); @@ -1099,8 +1097,8 @@ class AptWrapperTest { "SELECT t.id,t.user_id,t.name,t1.`name` AS userName FROM order_t t LEFT JOIN `user` t1 ON (t1.id = t.user_id) WHERE t1.del=false"); } - UserDOCol u = new UserDOCol(); - OrderDOCol o1 = new OrderDOCol(); + UserDOCol u = UserDOCol.build(); + OrderDOCol o1 = OrderDOCol.build(); AptQueryWrapper w = JoinWrappers.apt(o1) .selectAll() .selectAs(u.name, OrderDO::getUserName) @@ -1113,8 +1111,8 @@ class AptWrapperTest { */ @Test void checkOrderBy() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() .leftJoin(addr, addr.userId, u.id) diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ApplyFuncTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ApplyFuncTest.java index 8006f83..eca826d 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ApplyFuncTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ApplyFuncTest.java @@ -1,13 +1,11 @@ package com.github.yulichang.test.join.apt.unit; -import com.github.yulichang.test.join.entity.AddressDO; import com.github.yulichang.test.join.entity.UserDO; import com.github.yulichang.test.join.entity.apt.AddressDOCol; import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.segments.Fun; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -31,8 +29,8 @@ public class ApplyFuncTest { "LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del = false AND t1.del = false " + "AND (concat(t.id, t1.user_id, ?) IS NOT NULL " + "AND concat(t.id, t1.user_id, ?) IS NOT NULL)"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); List list = JoinWrappers.apt(u) .selectAll() @@ -49,8 +47,8 @@ public class ApplyFuncTest { "AND (concat(t.id, t1.user_id, ?) IS NOT NULL " + "AND concat(t.id, t1.user_id, ?) IS NOT NULL)"); - UserDOCol u1 = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol(); + UserDOCol u1 = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build(); List list1 = JoinWrappers.apt(u1) .selectAll(u1, u1.id) diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/AroundTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/AroundTest.java index de7767f..2457735 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/AroundTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/AroundTest.java @@ -5,7 +5,6 @@ import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.apt.AptQueryWrapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -24,7 +23,7 @@ public class AroundTest { void around() { ThreadLocalUtils.set("SELECT * FROM (SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, " + "t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false) tmp"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .around("select * from (", ") tmp"); wrapper.list().forEach(System.out::println); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ChineseFieldTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ChineseFieldTest.java index 875713e..4deaf3f 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ChineseFieldTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/ChineseFieldTest.java @@ -1,7 +1,6 @@ package com.github.yulichang.test.join.apt.unit; import com.github.yulichang.test.join.entity.UserTenantaDO; -import com.github.yulichang.test.join.entity.apt.UserTenantDOCol; import com.github.yulichang.test.join.entity.apt.UserTenantaDOCol; import com.github.yulichang.toolkit.JoinWrappers; import org.junit.jupiter.api.Test; @@ -14,7 +13,7 @@ public class ChineseFieldTest { @Test void chineseField() { - UserTenantaDOCol ut = new UserTenantaDOCol(); + UserTenantaDOCol ut = UserTenantaDOCol.build(); List list = JoinWrappers.apt(ut).list(); assert list.get(0).getDetail() != null; list.forEach(System.out::println); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java index 6602000..4f3d828 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java @@ -30,6 +30,7 @@ public class CustomWrapperTest { //自定义wrapper扩展 + @SuppressWarnings("unused") public static class CWrapper extends AptQueryWrapper { public CWrapper(BaseColumn baseColumn) { @@ -54,7 +55,7 @@ public class CustomWrapperTest { @Test void testWrapperCustomer() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id = ?)"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); CWrapper wrapper = new CWrapper<>(u) .selectAll() .toChildren(CWrapper::toCWrapper) @@ -62,7 +63,7 @@ public class CustomWrapperTest { List dos = userMapper.selectList(wrapper); dos.forEach(System.out::println); - UserDOCol u1 = new UserDOCol(); + UserDOCol u1 = UserDOCol.build(); ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false"); CWrapper wrapper1 = new CWrapper<>(u1) .selectAll() diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/EqSqlTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/EqSqlTest.java index 15b2580..3760f13 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/EqSqlTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/EqSqlTest.java @@ -1,6 +1,5 @@ package com.github.yulichang.test.join.apt.unit; -import com.github.yulichang.test.join.entity.UserDO; import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; @@ -22,12 +21,12 @@ public class EqSqlTest { void eqSql() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id = (SELECT id FROM `user` WHERE id = 1))"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); JoinWrappers.apt(u).eqSql(u.id, "select id from `user` where id = 1").list(); ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id = (SELECT id FROM `user` WHERE id = 1))"); - UserDOCol u1 = new UserDOCol(); + UserDOCol u1 = UserDOCol.build(); JoinWrappers.apt(u1).eqSql("t.id", "select id from `user` where id = 1").list(); } diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldAliasTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldAliasTest.java index 225247f..508f1cc 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldAliasTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldAliasTest.java @@ -34,8 +34,8 @@ public class FieldAliasTest { @Test void fieldAlias() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); List list = userMapper.selectList(JoinWrappers.apt(u) .selectAll() .leftJoin(addr, addr.userId, u.id)); @@ -48,8 +48,8 @@ public class FieldAliasTest { @Test void fieldAlias1() { - UserTenantDOCol ut = new UserTenantDOCol(); - UserDOCol u = new UserDOCol(); + UserTenantDOCol ut = UserTenantDOCol.build(); + UserDOCol u = UserDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(ut) .selectAll() .leftJoin(u, u.id, ut.uuid); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldNameTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldNameTest.java index e42925f..268cba9 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldNameTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/FieldNameTest.java @@ -28,8 +28,8 @@ public class FieldNameTest { @Test void testFieldName() { - AreaDOCol ar = new AreaDOCol(); - UserDtoCol ud = new UserDtoCol(); + AreaDOCol ar = AreaDOCol.build(); + UserDtoCol ud = UserDtoCol.build(); List list = areaMapper.selectJoinList(AreaDO.class, JoinWrappers.apt(ar) .select(ar.Postcode) .leftJoin(ud, ud.id, ar.id)); @@ -39,8 +39,8 @@ public class FieldNameTest { @Test void testFieldName1() { - AreaDOCol ar = new AreaDOCol(); - UserDtoCol ud = new UserDtoCol(); + AreaDOCol ar = AreaDOCol.build(); + UserDtoCol ud = UserDtoCol.build(); List list = areaMapper.selectJoinList(AreaDTO.class, JoinWrappers.apt(ar) .selectAs(ar.Postcode, AreaDTO::getPostcode) .leftJoin(ud, ud.id, ar.id)); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/IfExistsTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/IfExistsTest.java index 0820496..47ad28b 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/IfExistsTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/IfExistsTest.java @@ -6,7 +6,6 @@ import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.apt.AptQueryWrapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -45,7 +44,7 @@ public class IfExistsTest { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + "WHERE t.del = false AND (t.id = ? AND t.head_img = ? AND t.`name` = ?)"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() .eqIfExists(u.id, 1) @@ -59,7 +58,7 @@ public class IfExistsTest { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + "WHERE t.del = false AND (t.id = ? AND t.`name` = ?)"); - UserDOCol u1 = new UserDOCol(); + UserDOCol u1 = UserDOCol.build(); AptQueryWrapper wrapper1 = JoinWrappers.apt(u1) .selectAll() .setIfExists(IfExistsEnum.NOT_BLANK) @@ -74,7 +73,7 @@ public class IfExistsTest { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + "WHERE t.del = false AND (t.id = ? AND t.`name` = ? AND t.head_img = ? AND t.`name` = ?)"); - UserDOCol u2 = new UserDOCol(); + UserDOCol u2 = UserDOCol.build(); AptQueryWrapper wrapper2 = JoinWrappers.apt(u2) .selectAll() .setIfExists(o -> true) diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/NotLikeLeftRightTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/NotLikeLeftRightTest.java index 8bf8b70..a0294e9 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/NotLikeLeftRightTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/NotLikeLeftRightTest.java @@ -5,7 +5,6 @@ import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.apt.AptQueryWrapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -25,7 +24,7 @@ public class NotLikeLeftRightTest { void notLikeLeftRight() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.`name` NOT LIKE ?)"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() .notLikeLeft(u.name, "aa"); @@ -34,7 +33,7 @@ public class NotLikeLeftRightTest { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.`name` NOT LIKE ?)"); - UserDOCol u1 = new UserDOCol(); + UserDOCol u1 = UserDOCol.build(); AptQueryWrapper wrapper1 = JoinWrappers.apt(u1) .selectAll() .notLikeRight(u1.name, "aa"); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java index 850c58a..09a45c3 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java @@ -31,7 +31,7 @@ public class OrderByTest { void orderBy() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by " + "FROM `user` t WHERE t.del = false AND (t.id = ?) ORDER BY t.id ASC, t.`name` ASC, t.pid ASC"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); List columList = Arrays.asList(u.id, u.name, u.pid); AptQueryWrapper wrapper = JoinWrappers.apt(u) @@ -48,7 +48,7 @@ public class OrderByTest { void orderBy1() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by " + "FROM `user` t WHERE t.del = false AND (t.id = ?) GROUP BY t.id, t.`name`, t.pid"); - UserDOCol u = new UserDOCol(); + UserDOCol u = UserDOCol.build(); List columList = Arrays.asList(u.id, u.name, u.pid); AptQueryWrapper wrapper = JoinWrappers.apt(u) @@ -64,8 +64,8 @@ public class OrderByTest { @Test void orderBy2() { - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/SelectSubTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/SelectSubTest.java index 2ee542e..5092c52 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/SelectSubTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/SelectSubTest.java @@ -30,10 +30,10 @@ public class SelectSubTest { @Test void sub() { ThreadLocalUtils.set("SELECT (SELECT st.id FROM `user` st WHERE st.del = false AND (st.id = t.id AND st.id = ?) LIMIT 1) AS id, (SELECT st.id FROM `user` st WHERE st.del = false AND (st.id = t.id AND st.id = ?) LIMIT 1) AS name FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del = false AND t1.del = false AND (t.id <= ?)"); - UserDOCol u = new UserDOCol(); - UserDOCol sb = new UserDOCol(); - UserDOCol sb2 = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + UserDOCol sb = UserDOCol.build(); + UserDOCol sb2 = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectSub(sb, w -> w.select(sb.id) @@ -48,9 +48,9 @@ public class SelectSubTest { .le(u.id, 100); wrapper.list(); - UserDOCol u1 = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol(); - AreaDOCol area = new AreaDOCol(); + UserDOCol u1 = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build(); + AreaDOCol area = AreaDOCol.build(); ThreadLocalUtils.set("SELECT (SELECT st.id FROM area st WHERE st.del = false AND (st.id = t1.id) LIMIT 1) AS id FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del = false AND t1.del = false AND (t.id <= ?)"); AptQueryWrapper wrapper1 = JoinWrappers.apt(u1) @@ -65,9 +65,9 @@ public class SelectSubTest { @Test void sub1() { ThreadLocalUtils.set("SELECT (SELECT st.id FROM `area` st WHERE st.del = false AND (st.id = t1.id) LIMIT 1) AS id FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del = false AND t1.del = false AND (t.id <= ?)"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol ar = AreaDOCol.build(); AptQueryWrapper wrapper1 = JoinWrappers.apt(u) .selectSub(ar, w -> w.select(ar.id) diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/StringColumTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/StringColumTest.java index a0d8ea8..e0a54bf 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/StringColumTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/StringColumTest.java @@ -33,8 +33,8 @@ public class StringColumTest { ThreadLocalUtils.set("SELECT (SELECT id FROM `user` u WHERE u.id = t.id) id, t.`name` AS PName, t.`name` PName, t.`name`," + " (SELECT id FROM `user` u WHERE u.id = t.id), t1.id AS joina_id, t1.user_id, t1.area_id, t1.tel, " + "t1.address, t1.del FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del = false AND t1.del = false"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); List l3 = userMapper.selectJoinList(UserDTO.class, new AptQueryWrapper<>(u) .select("(select id from `user` u where u.id = t.id) id") .select("t.`name` as PName") diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/TableAliasTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/TableAliasTest.java index c74afd6..c33f633 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/TableAliasTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/TableAliasTest.java @@ -38,10 +38,10 @@ public class TableAliasTest { "LEFT JOIN area area1 ON (area1.id = addr1.area_id) " + "WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + "GROUP BY t.id"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol("addr1"); - AddressDOCol addr2 = new AddressDOCol("addr2"); - AreaDOCol area1 = new AreaDOCol("area1"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build("addr1"); + AddressDOCol addr2 = AddressDOCol.build("addr2"); + AreaDOCol area1 = AreaDOCol.build("area1"); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() @@ -63,10 +63,10 @@ public class TableAliasTest { "WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + "GROUP BY t.id,addr1.id ORDER BY addr1.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol("addr1"); - AddressDOCol addr2 = new AddressDOCol("addr2"); - AreaDOCol area1 = new AreaDOCol("area1"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build("addr1"); + AddressDOCol addr2 = AddressDOCol.build("addr2"); + AreaDOCol area1 = AreaDOCol.build("area1"); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() @@ -90,10 +90,10 @@ public class TableAliasTest { "LEFT JOIN area area1 ON (area1.id = addr2.area_id) WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + "AND (addr1.id = ? AND addr2.id = ? AND addr1.id = ?)"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr1 = new AddressDOCol("addr1"); - AddressDOCol addr2 = new AddressDOCol("addr2"); - AreaDOCol area1 = new AreaDOCol("area1"); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr1 = AddressDOCol.build("addr1"); + AddressDOCol addr2 = AddressDOCol.build("addr2"); + AreaDOCol area1 = AreaDOCol.build("area1"); AptQueryWrapper wrapper = JoinWrappers.apt(u) .selectAll() @@ -113,7 +113,7 @@ public class TableAliasTest { ThreadLocalUtils.set("SELECT aaa.id, aaa.pid, aaa.`name`, aaa.`json`, aaa.sex, aaa.head_img, aaa.create_time, " + "aaa.address_id, aaa.address_id2, aaa.del, aaa.create_by, aaa.update_by FROM `user` aaa WHERE aaa.`name` = ? AND aaa.del = false"); - UserDOCol u = new UserDOCol("aaa"); + UserDOCol u = UserDOCol.build("aaa"); UserDO userDO = new UserDO(); userDO.setName("aaa"); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/UnionTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/UnionTest.java index 3611ede..e9b65c8 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/UnionTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/UnionTest.java @@ -28,10 +28,10 @@ public class UnionTest { void unionAll1() { ThreadLocalUtils.set("SELECT t.id FROM `user` t WHERE t.del = false AND (t.id = ?) UNION ALL SELECT t.id FROM address t WHERE (t.id = ?) UNION ALL SELECT (SELECT st.id FROM area st WHERE st.del = false AND (st.id = ? AND (st.id = ?))) AS id FROM area t WHERE t.del = false AND (t.id = ? AND (t.id = ?))"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol area = new AreaDOCol(); - AreaDOCol areaSb = new AreaDOCol(); + UserDOCol u = UserDOCol.build(); + AddressDOCol addr = AddressDOCol.build(); + AreaDOCol area = AreaDOCol.build(); + AreaDOCol areaSb = AreaDOCol.build(); AptQueryWrapper wrapper = JoinWrappers.apt(u) .select(u.id) diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java index 0ad26c2..1c29f4b 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java @@ -21,6 +21,7 @@ import javax.tools.Diagnostic; import javax.tools.JavaFileObject; import java.io.Writer; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -114,20 +115,25 @@ public class EntityProcessor extends AbstractProcessor { tableInfo.setFields(fieldInfos); - StringBuilderHelper content = new StringBuilderHelper() + StringBuilderHelper content = new StringBuilderHelper(tableInfo) .addPackage(tableInfo.getTagClassPackage()) .newLine() - .addImport(BaseColumn.class.getName()) - .addImport(Column.class.getName()) - .addImport(tableInfo.getClassName()) + .addImport(true, BaseColumn.class.getName()) + .addImport(true, Column.class.getName()) + .addImport(true, tableInfo.getClassName()) + .newLine(tableInfo.isCache()) + .addImport(tableInfo.isCache(), Map.class.getName()) + .addImport(tableInfo.isCache(), Objects.class.getName()) + .addImport(tableInfo.isCache(), ConcurrentHashMap.class.getName()) .newLine() .addClass(tableInfo.getClassComment(), tableInfo.getTagClassName(), BaseColumn.class.getSimpleName() + "<" + tableInfo.getSimpleClassName() + ">", c -> c - .addConstructor(tableInfo) - .addFields(tableInfo) - .addMethod(tableInfo) - .addBuild(tableInfo) + .addConstructor() + .addFields() + .addMethod() + .addBuild() + .addCacheClass() ); writerFile(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName(), content.getContent()); return tableInfo; @@ -142,7 +148,7 @@ public class EntityProcessor extends AbstractProcessor { content.addPackage(tagPackage); content.newLine(); // import - tableInfos.forEach(tableInfo -> content.addImport(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName())); + tableInfos.forEach(tableInfo -> content.addImport(true, tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName())); content.newLine(); // class String tables = "Tables"; @@ -172,14 +178,24 @@ public class EntityProcessor extends AbstractProcessor { @SuppressWarnings("UnusedReturnValue") public static class StringBuilderHelper { private final StringBuilder sb = new StringBuilder(); + private TableInfo tableInfo; + + public StringBuilderHelper() { + } + + public StringBuilderHelper(TableInfo tableInfo) { + this.tableInfo = tableInfo; + } public StringBuilderHelper addPackage(String packageName) { sb.append("package ").append(packageName).append(";\n"); return this; } - public StringBuilderHelper addImport(String importName) { - sb.append("import ").append(importName).append(";\n"); + public StringBuilderHelper addImport(boolean cond, String importName) { + if (cond) { + sb.append("import ").append(importName).append(";\n"); + } return this; } @@ -196,7 +212,7 @@ public class EntityProcessor extends AbstractProcessor { return this; } - public StringBuilderHelper addConstructor(TableInfo tableInfo) { + public StringBuilderHelper addConstructor() { // 无参构造 newLine(); sb.append(String.format("\tpublic %s() {\n\t}\n", tableInfo.getTagClassName())); @@ -218,7 +234,7 @@ public class EntityProcessor extends AbstractProcessor { return this; } - public StringBuilderHelper addFields(TableInfo tableInfo) { + public StringBuilderHelper addFields() { tableInfo.getFields().forEach(fieldInfo -> { addComment("\t", fieldInfo.getComment()); sb.append(String.format("\tpublic final Column %s = new Column(this, \"%s\");\n", @@ -231,7 +247,7 @@ public class EntityProcessor extends AbstractProcessor { public StringBuilderHelper addTablesFields(List tableInfos) { tableInfos.forEach(tableInfo -> { addComment("\t", tableInfo.getClassComment()); - sb.append(String.format("\tpublic static final %s %s = new %s();\n", + sb.append(String.format("\tpublic static final %s %s = %s.build();\n", tableInfo.getTagClassName(), String.format(tableInfo.getTagTablesName(), tableInfo.getSimpleClassName()), tableInfo.getTagClassName())); @@ -240,7 +256,7 @@ public class EntityProcessor extends AbstractProcessor { return this; } - public StringBuilderHelper addMethod(TableInfo tableInfo) { + public StringBuilderHelper addMethod() { sb.append("\t@Override\n" + "\tpublic Class<").append(tableInfo.getSimpleClassName()).append("> getColumnClass() {\n") .append("\t\treturn ").append(tableInfo.getSimpleClassName()).append(".class;\n") @@ -249,18 +265,33 @@ public class EntityProcessor extends AbstractProcessor { return this; } - public StringBuilderHelper addBuild(TableInfo tableInfo) { - sb.append("\tpublic static ").append(tableInfo.getTagClassName()).append(" build() {\n") - .append("\t\treturn new ").append(tableInfo.getTagClassName()).append("();\n") - .append("\t}\n"); + public StringBuilderHelper addBuild() { + sb.append("\tpublic static ").append(tableInfo.getTagClassName()).append(" build() {\n"); + sb.append("\t\treturn new ").append(tableInfo.getTagClassName()).append("();\n"); + sb.append("\t}\n"); newLine(); - sb.append("\tpublic static ").append(tableInfo.getTagClassName()).append(" build(String alias) {\n") - .append("\t\treturn new ").append(tableInfo.getTagClassName()).append("(alias);\n") - .append("\t}\n"); + sb.append("\tpublic static ").append(tableInfo.getTagClassName()).append(" build(String alias) {\n"); + if (tableInfo.isCache()) { + sb.append("\t\tObjects.requireNonNull(alias);\n"); + sb.append("\t\treturn Cache.CACHE.computeIfAbsent(alias, key -> new ").append(tableInfo.getTagClassName()).append("(key));\n"); + } else { + sb.append("\t\treturn new ").append(tableInfo.getTagClassName()).append("(alias);\n"); + } + sb.append("\t}\n"); newLine(); return this; } + public StringBuilderHelper addCacheClass() { + if (tableInfo.isCache()) { + sb.append("\tpublic static class Cache {\n") + .append("\t\tprivate static final Map CACHE = new ConcurrentHashMap<>();\n") + .append("\t}\n"); + newLine(); + } + return this; + } + private StringBuilderHelper addComment(String prefix, String comment) { if (StringUtil.isNotEmpty(comment)) { sb.append(prefix).append("/**\n"); @@ -276,6 +307,13 @@ public class EntityProcessor extends AbstractProcessor { return this; } + public StringBuilderHelper newLine(boolean cond) { + if (cond) { + sb.append("\n"); + } + return this; + } + public String getContent() { return sb.toString(); } diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java index 274ffaa..3f2f4c6 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java @@ -22,6 +22,7 @@ public class Conf { private boolean genTables = true; private String tablasClassPackage = "%s.tables"; private String tablesClassName = "%S"; + private boolean cache = true; private boolean initFlag = false; @@ -32,6 +33,7 @@ public class Conf { this.tablasClassPackage = conf.tablasClassPackage; this.tablesClassName = conf.tablesClassName; this.initFlag = conf.initFlag; + this.cache = conf.cache; } @@ -73,6 +75,7 @@ public class Conf { this.genTables = Boolean.parseBoolean(properties.getOrDefault("genTables", Boolean.toString(this.genTables)).toString()); this.tablasClassPackage = properties.getOrDefault("tablasClassPackage", this.tablasClassPackage).toString(); this.tablesClassName = properties.getOrDefault("tablesClassName", this.tablesClassName).toString(); + this.cache = Boolean.parseBoolean(properties.getOrDefault("cache", this.cache).toString()); } public static Conf getConf(Conf globalConf, Table table, Collection keys) { @@ -124,12 +127,21 @@ public class Conf { this.tablesClassName = tablesClassName; } + public boolean isCache() { + return cache; + } + + public void setCache(boolean cache) { + this.cache = cache; + } + public enum ConfItem { className("value", Table::value, (c, v) -> c.setClassName(v.toString())), packageName("classPackage", Table::classPackage, (c, v) -> c.setClassPackage(v.toString())), genTables("genTables", Table::genTables, (c, v) -> c.setGenTables((boolean) v)), tablasPackageName("tablesClassPackage", Table::tablesClassPackage, (c, v) -> c.setTablasClassPackage(v.toString())), - tablesName("tablesClassName", Table::tablesClassName, (c, v) -> c.setTablesClassName(v.toString())); + tablesName("tablesClassName", Table::tablesClassName, (c, v) -> c.setTablesClassName(v.toString())), + cache("cache", Table::cache, (c, v) -> c.setCache((boolean) v)); private final String action; diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java index abcd636..c38a7a7 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java @@ -126,6 +126,10 @@ public class TableInfo { return this.conf.isGenTables(); } + public boolean isCache() { + return this.conf.isCache(); + } + public Set getFields() { return fields; }