mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-25 00:00:12 +08:00
添加缓存
This commit is contained in:
parent
19d67fd1a8
commit
4f3f6dac3f
@ -77,4 +77,8 @@ public @interface Table {
|
||||
*/
|
||||
String tablesClassName() default "%S";
|
||||
|
||||
/**
|
||||
* 是否缓存
|
||||
*/
|
||||
boolean cache() default true;
|
||||
}
|
@ -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<UserDto> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> wrapper1 = new AptQueryWrapper<>(uuu)
|
||||
.disableSubLogicDel()
|
||||
@ -557,20 +557,20 @@ class AptWrapperTest {
|
||||
*/
|
||||
@Test
|
||||
void testLogicDel() {
|
||||
UserDOCol u1 = new UserDOCol();
|
||||
UserDOCol u1 = UserDOCol.build();
|
||||
List<UserDTO> 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<UserDTO> 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<UserDTO> 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<UserDTO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDTO> 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<UserDTO> 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<UserDO> 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<UserDO> 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<Map<String, Object>> 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<UserDO> 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<AddressDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<AddressDO> 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<UserDO> 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<UserDO> wrapper = JoinWrappers.apt(u)
|
||||
.selectAll()
|
||||
.leftJoin(addr, addr.userId, u.id)
|
||||
@ -1071,8 +1071,6 @@ class AptWrapperTest {
|
||||
.eq(addr.id, addr.id);
|
||||
List<UserDO> 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<OrderDO> wrapper = JoinWrappers.apt(o);
|
||||
List<OrderDO> 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<OrderDO> 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<UserDO> wrapper = JoinWrappers.apt(u)
|
||||
.selectAll()
|
||||
.leftJoin(addr, addr.userId, u.id)
|
||||
|
@ -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<UserDO> 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<UserDO> list1 = JoinWrappers.apt(u1)
|
||||
.selectAll(u1, u1.id)
|
||||
|
@ -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<UserDO> wrapper = JoinWrappers.apt(u)
|
||||
.around("select * from (", ") tmp");
|
||||
wrapper.list().forEach(System.out::println);
|
||||
|
@ -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<UserTenantaDO> list = JoinWrappers.apt(ut).list();
|
||||
assert list.get(0).getDetail() != null;
|
||||
list.forEach(System.out::println);
|
||||
|
@ -30,6 +30,7 @@ public class CustomWrapperTest {
|
||||
|
||||
|
||||
//自定义wrapper扩展
|
||||
@SuppressWarnings("unused")
|
||||
public static class CWrapper<T> extends AptQueryWrapper<T> {
|
||||
|
||||
public CWrapper(BaseColumn<T> 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<UserDO> wrapper = new CWrapper<>(u)
|
||||
.selectAll()
|
||||
.toChildren(CWrapper::toCWrapper)
|
||||
@ -62,7 +63,7 @@ public class CustomWrapperTest {
|
||||
List<UserDO> 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<UserDO> wrapper1 = new CWrapper<>(u1)
|
||||
.selectAll()
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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<UserDO> 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<UserTenantDO> wrapper = JoinWrappers.apt(ut)
|
||||
.selectAll()
|
||||
.leftJoin(u, u.id, ut.uuid);
|
||||
|
@ -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<AreaDO> 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<AreaDTO> list = areaMapper.selectJoinList(AreaDTO.class, JoinWrappers.apt(ar)
|
||||
.selectAs(ar.Postcode, AreaDTO::getPostcode)
|
||||
.leftJoin(ud, ud.id, ar.id));
|
||||
|
@ -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<UserDO> 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<UserDO> 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<UserDO> wrapper2 = JoinWrappers.apt(u2)
|
||||
.selectAll()
|
||||
.setIfExists(o -> true)
|
||||
|
@ -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<UserDO> 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<UserDO> wrapper1 = JoinWrappers.apt(u1)
|
||||
.selectAll()
|
||||
.notLikeRight(u1.name, "aa");
|
||||
|
@ -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<Column> columList = Arrays.asList(u.id, u.name, u.pid);
|
||||
|
||||
AptQueryWrapper<UserDO> 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<Column> columList = Arrays.asList(u.id, u.name, u.pid);
|
||||
|
||||
AptQueryWrapper<UserDO> 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<UserDO> wrapper = JoinWrappers.apt(u)
|
||||
.selectAll()
|
||||
|
@ -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<UserDO> 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<UserDO> 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<UserDO> wrapper1 = JoinWrappers.apt(u)
|
||||
.selectSub(ar, w -> w.select(ar.id)
|
||||
|
@ -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<UserDTO> 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")
|
||||
|
@ -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<UserDO> 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<UserDO> 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<UserDO> 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");
|
||||
|
@ -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<UserDO> wrapper = JoinWrappers.apt(u)
|
||||
.select(u.id)
|
||||
|
@ -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<TableInfo> 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<String, ").append(tableInfo.getTagClassName()).append("> 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();
|
||||
}
|
||||
|
@ -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<String> 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;
|
||||
|
||||
|
@ -126,6 +126,10 @@ public class TableInfo {
|
||||
return this.conf.isGenTables();
|
||||
}
|
||||
|
||||
public boolean isCache() {
|
||||
return this.conf.isCache();
|
||||
}
|
||||
|
||||
public Set<FieldInfo> getFields() {
|
||||
return fields;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user