mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
fix https://gitee.com/best_handsome/mybatis-plus-join/issues/I84S1N https://gitee.com/best_handsome/mybatis-plus-join/issues/I7B6DT https://github.com/yulichang/mybatis-plus-join/issues/73
This commit is contained in:
parent
db0d197226
commit
a0c8d9c797
@ -123,7 +123,7 @@ public class MPJTableFieldInfo {
|
||||
(!Arrays.asList(mapping.select()).contains(this.joinProperty.trim()) &&
|
||||
!Arrays.asList(mapping.select()).contains(this.joinColumn.trim()));
|
||||
this.wrapper = new MPJMappingWrapper(mapping.first(), checkArr(mapping.select()) ?
|
||||
(this.isRemoveBindField ? propToColumn(this.joinClass, mapping.select(), this.joinColumn) :
|
||||
(this.isRemoveBindField ? propToColumn(this.joinClass, mapping.select(), this.joinProperty) :
|
||||
propToColumn(this.joinClass, mapping.select(), null)) : null,
|
||||
mapping.apply(), mapping.condition(), mapping.last(), mapping.orderByAsc(), mapping.orderByDesc());
|
||||
}
|
||||
@ -146,7 +146,7 @@ public class MPJTableFieldInfo {
|
||||
this.isRemoveBindField = !mappingField.select().equals(this.joinColumn.trim()) &&
|
||||
!mappingField.select().equals(this.joinProperty.trim());
|
||||
this.wrapper = new MPJMappingWrapper(mappingField.first(), this.isRemoveBindField ?
|
||||
propToColumn(this.joinClass, new String[]{mappingField.select()}, this.joinColumn) :
|
||||
propToColumn(this.joinClass, new String[]{mappingField.select()}, this.joinProperty) :
|
||||
propToColumn(this.joinClass, new String[]{mappingField.select()}, null), mappingField.apply(),
|
||||
mappingField.condition(), mappingField.last(), mappingField.orderByAsc(), mappingField.orderByDesc());
|
||||
initBindField(mappingField.select());
|
||||
@ -201,9 +201,9 @@ public class MPJTableFieldInfo {
|
||||
this.joinColumn = joinFieldInfo.getColumn();
|
||||
this.joinField = getField(this.joinClass, joinFieldInfo);
|
||||
}
|
||||
Assert.notNull(this.joinField, "注解属性thisField不存在 %s , %s", this.joinClass.getName(),
|
||||
Assert.notNull(this.joinField, "注解属性joinField不存在 %s , %s", this.joinClass.getName(),
|
||||
StringUtils.isBlank(this.joinProperty) ? "主键" : this.joinProperty);
|
||||
Assert.notNull(this.joinColumn, "注解属性thisField不存在 %s , %s", this.joinClass.getName(),
|
||||
Assert.notNull(this.joinColumn, "注解属性joinField不存在 %s , %s", this.joinClass.getName(),
|
||||
StringUtils.isBlank(this.joinProperty) ? "主键" : this.joinProperty);
|
||||
this.joinField.setAccessible(true);
|
||||
}
|
||||
@ -268,7 +268,7 @@ public class MPJTableFieldInfo {
|
||||
}
|
||||
|
||||
private boolean checkArr(String[] arr) {
|
||||
if (Objects.isNull(arr) || arr.length <= 0) {
|
||||
if (Objects.isNull(arr) || arr.length == 0) {
|
||||
return false;
|
||||
}
|
||||
return Arrays.stream(arr).anyMatch(StringUtils::isNotBlank);
|
||||
|
@ -1,17 +1,21 @@
|
||||
package com.github.yulichang.test.mapping.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.github.yulichang.annotation.FieldMapping;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
|
||||
@Data
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode
|
||||
@FieldNameConstants
|
||||
@TableName("address")
|
||||
public class AddressDO {
|
||||
|
||||
@ -22,10 +26,16 @@ public class AddressDO {
|
||||
|
||||
private Integer areaId;
|
||||
|
||||
private String city;
|
||||
|
||||
private String tel;
|
||||
|
||||
private String address;
|
||||
|
||||
@TableLogic
|
||||
private Boolean del;
|
||||
|
||||
@TableField(exist = false)
|
||||
@FieldMapping(tag = AreaDO.class, thisField = "city", joinField = "cityId", select = "area")
|
||||
private String area;
|
||||
}
|
||||
|
@ -1,26 +1,26 @@
|
||||
package com.github.yulichang.test.mapping.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
|
||||
@Data
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode
|
||||
@FieldNameConstants
|
||||
@TableName("area")
|
||||
public class AreaDO {
|
||||
|
||||
@TableId
|
||||
private Integer id;
|
||||
private Integer areaId;
|
||||
|
||||
private String province;
|
||||
|
||||
private String city;
|
||||
private String cityId;
|
||||
|
||||
private String area;
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.github.yulichang.test.mapping.service;
|
||||
|
||||
import com.github.yulichang.extension.mapping.base.MPJDeepService;
|
||||
import com.github.yulichang.test.mapping.entity.AddressDO;
|
||||
|
||||
public interface AddressService extends MPJDeepService<AddressDO> {
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.github.yulichang.test.mapping.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.test.mapping.entity.AddressDO;
|
||||
import com.github.yulichang.test.mapping.mapper.AddressMapper;
|
||||
import com.github.yulichang.test.mapping.service.AddressService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AddressServiceImpl extends ServiceImpl<AddressMapper, AddressDO> implements AddressService {
|
||||
|
||||
}
|
@ -4,28 +4,28 @@
|
||||
|
||||
DELETE FROM area;
|
||||
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10001, '北京市01', '北京01', '朝阳01', '80001', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10002, '北京市02', '北京02', '朝阳02', '80002', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10003, '北京市03', '北京03', '朝阳03', '80003', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10004, '北京市04', '北京04', '朝阳04', '80004', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10005, '北京市05', '北京05', '朝阳05', '80005', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10006, '北京市06', '北京06', '朝阳06', '80006', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10007, '北京市07', '北京07', '朝阳07', '80007', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10008, '北京市08', '北京08', '朝阳08', '80008', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10009, '北京市09', '北京09', '朝阳09', '80009', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10010, '北京市10', '北京10', '朝阳10', '80010', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10011, '北京市11', '北京11', '朝阳11', '80011', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10012, '北京市12', '北京12', '朝阳12', '80012', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10013, '北京市13', '北京13', '朝阳13', '80013', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10014, '北京市14', '北京14', '朝阳14', '80014', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10015, '北京市15', '北京15', '朝阳15', '80015', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10016, '北京市16', '北京16', '朝阳16', '80016', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10017, '北京市17', '北京17', '朝阳17', '80017', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10018, '北京市18', '北京18', '朝阳18', '80018', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10019, '北京市19', '北京19', '朝阳19', '80019', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10020, '北京市20', '北京20', '朝阳20', '80020', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10021, '北京市21', '北京21', '朝阳21', '80021', false);
|
||||
INSERT INTO area (id, province, city, area, postcode, del) VALUES (10022, '北京市22', '北京22', '朝阳22', '80022', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10001, '北京市01', '北京01', '朝阳01', '80001', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10002, '北京市02', '北京02', '朝阳02', '80002', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10003, '北京市03', '北京03', '朝阳03', '80003', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10004, '北京市04', '北京04', '朝阳04', '80004', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10005, '北京市05', '北京05', '朝阳05', '80005', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10006, '北京市06', '北京06', '朝阳06', '80006', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10007, '北京市07', '北京07', '朝阳07', '80007', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10008, '北京市08', '北京08', '朝阳08', '80008', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10009, '北京市09', '北京09', '朝阳09', '80009', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10010, '北京市10', '北京10', '朝阳10', '80010', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10011, '北京市11', '北京11', '朝阳11', '80011', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10012, '北京市12', '北京12', '朝阳12', '80012', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10013, '北京市13', '北京13', '朝阳13', '80013', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10014, '北京市14', '北京14', '朝阳14', '80014', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10015, '北京市15', '北京15', '朝阳15', '80015', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10016, '北京市16', '北京16', '朝阳16', '80016', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10017, '北京市17', '北京17', '朝阳17', '80017', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10018, '北京市18', '北京18', '朝阳18', '80018', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10019, '北京市19', '北京19', '朝阳19', '80019', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10020, '北京市20', '北京20', '朝阳20', '80020', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10021, '北京市21', '北京21', '朝阳21', '80021', false);
|
||||
INSERT INTO area (area_id, province, city_id, area, postcode, del) VALUES (10022, '北京市22', '北京22', '朝阳22', '80022', false);
|
||||
|
||||
DELETE FROM `user`;
|
||||
|
||||
@ -55,25 +55,25 @@ INSERT INTO `user` (id, pid, `name`, `address_id`, sex, head_img, del) VALUES (2
|
||||
|
||||
DELETE FROM address;
|
||||
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 1, 1, 10001, '10000000001', '曹县01', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 2, 1, 10002, '10000000002', '曹县02', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 3, 1, 10003, '10000000003', '曹县03', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 4, 1, 10004, '10000000004', '曹县04', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 5, 1, 10005, '10000000005', '曹县05', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 6, 1, 10006, '10000000006', '曹县06', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 7, 1, 10007, '10000000007', '曹县07', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 8, 1, 10008, '10000000008', '曹县08', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 9, 1, 10009, '10000000009', '曹县09', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (10,10, 10010, '10000000010', '曹县10', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (11,11, 10011, '10000000011', '曹县11', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (12,12, 10012, '10000000012', '曹县12', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (13,13, 10013, '10000000013', '曹县13', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (14,14, 10014, '10000000014', '曹县14', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (15,15, 10015, '10000000015', '曹县15', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (16,16, 10016, '10000000016', '曹县16', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (17,17, 10017, '10000000017', '曹县17', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (18,18, 10018, '10000000018', '曹县18', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (19,19, 10019, '10000000019', '曹县19', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (20,20, 10020, '10000000020', '曹县20', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (21,21, 10021, '10000000021', '曹县21', false);
|
||||
INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (22,22, 10022, '10000000022', '曹县22', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 1, 1, 10001, '北京01', '10000000001', '曹县01', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 2, 1, 10002, '北京02', '10000000002', '曹县02', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 3, 1, 10003, '北京03', '10000000003', '曹县03', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 4, 1, 10004, '北京04', '10000000004', '曹县04', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 5, 1, 10005, '北京05', '10000000005', '曹县05', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 6, 1, 10006, '北京06', '10000000006', '曹县06', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 7, 1, 10007, '北京07', '10000000007', '曹县07', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 8, 1, 10008, '北京08', '10000000008', '曹县08', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES ( 9, 1, 10009, '北京09', '10000000009', '曹县09', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (10,10, 10010, '北京10', '10000000010', '曹县10', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (11,11, 10011, '北京11', '10000000011', '曹县11', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (12,12, 10012, '北京12', '10000000012', '曹县12', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (13,13, 10013, '北京13', '10000000013', '曹县13', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (14,14, 10014, '北京14', '10000000014', '曹县14', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (15,15, 10015, '北京15', '10000000015', '曹县15', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (16,16, 10016, '北京16', '10000000016', '曹县16', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (17,17, 10017, '北京17', '10000000017', '曹县17', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (18,18, 10018, '北京18', '10000000018', '曹县18', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (19,19, 10019, '北京19', '10000000019', '曹县19', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (20,20, 10020, '北京20', '10000000020', '曹县20', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (21,21, 10021, '北京21', '10000000021', '曹县21', false);
|
||||
INSERT INTO address (id, user_id, area_id, city, tel, address, del) VALUES (22,22, 10022, '北京22', '10000000022', '曹县22', false);
|
@ -6,10 +6,10 @@ DROP TABLE IF EXISTS area;
|
||||
|
||||
create table area
|
||||
(
|
||||
id int auto_increment
|
||||
area_id int auto_increment
|
||||
primary key,
|
||||
province varchar(255) null,
|
||||
city varchar(255) null,
|
||||
city_id varchar(255) null,
|
||||
area varchar(255) null,
|
||||
postcode varchar(255) null,
|
||||
del bit
|
||||
@ -37,6 +37,7 @@ create table address
|
||||
primary key,
|
||||
user_id int null,
|
||||
area_id int null,
|
||||
city varchar(255) null,
|
||||
tel varchar(255) null,
|
||||
address varchar(255) null,
|
||||
del bit
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.github.yulichang.test.mapping;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.github.yulichang.test.mapping.entity.AddressDO;
|
||||
import com.github.yulichang.test.mapping.entity.UserDO;
|
||||
import com.github.yulichang.test.mapping.service.AddressService;
|
||||
import com.github.yulichang.test.mapping.service.UserService;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -20,6 +22,8 @@ class MappingTest {
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private AddressService addressService;
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
@ -50,4 +54,11 @@ class MappingTest {
|
||||
List<UserDO> dos = userService.listDeep(wrapper, conf -> conf.loop(false));
|
||||
System.out.println(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJoin1() {
|
||||
List<AddressDO> dos = addressService.listDeep(Wrappers.emptyWrapper());
|
||||
assert dos.get(0).getArea() != null;
|
||||
dos.forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user