fixed value is QueryColumn or RawValue

This commit is contained in:
开源海哥 2023-04-13 18:51:59 +08:00
parent 045b5fe106
commit 9777c71da9
2 changed files with 35 additions and 20 deletions

View File

@ -49,30 +49,37 @@ class WrapperUtil {
if (condition == null) { if (condition == null) {
return; return;
} }
Object value = condition.getValue(); Object value = condition.getValue();
if (value != null) { if (value == null
if (value.getClass().isArray()) { || value instanceof QueryColumn
Object[] values = (Object[]) value; || value instanceof RawValue) {
for (Object object : values) { getValues(condition.next, paras);
if (object != null && (object.getClass().isArray() return;
|| object.getClass() == int[].class }
|| object.getClass() == long[].class
|| object.getClass() == short[].class
|| object.getClass() == float[].class if (value.getClass().isArray()) {
|| object.getClass() == double[].class)) { Object[] values = (Object[]) value;
for (int i = 0; i < Array.getLength(object); i++) { for (Object object : values) {
paras.add(Array.get(object, i)); if (object != null && (object.getClass().isArray()
} || object.getClass() == int[].class
} else { || object.getClass() == long[].class
paras.add(object); || object.getClass() == short[].class
|| object.getClass() == float[].class
|| object.getClass() == double[].class)) {
for (int i = 0; i < Array.getLength(object); i++) {
paras.add(Array.get(object, i));
} }
} else {
paras.add(object);
} }
} else if (value instanceof QueryWrapper) {
Object[] valueArray = ((QueryWrapper) value).getValueArray();
paras.addAll(Arrays.asList(valueArray));
} else {
paras.add(value);
} }
} else if (value instanceof QueryWrapper) {
Object[] valueArray = ((QueryWrapper) value).getValueArray();
paras.addAll(Arrays.asList(valueArray));
} else {
paras.add(value);
} }
getValues(condition.next, paras); getValues(condition.next, paras);

View File

@ -59,6 +59,14 @@ public class TenantTester {
TenantAccountMapper mapper = MybatisFlexBootstrap.getInstance().getMapper(TenantAccountMapper.class); TenantAccountMapper mapper = MybatisFlexBootstrap.getInstance().getMapper(TenantAccountMapper.class);
// mapper.selectListByQuery(QueryWrapper.create()
// .select(TENANT_ACCOUNT.ALL_COLUMNS)
// .from(TENANT_ACCOUNT.as("a"), TENANT_ACCOUNT1.as("b"))
// .where(TENANT_ACCOUNT.ID.eq(TENANT_ACCOUNT1.ID))
// .and(TENANT_ACCOUNT.ID.eq(1))
// );
//SELECT * FROM `tb_account` WHERE `tenant_id` = 1 //SELECT * FROM `tb_account` WHERE `tenant_id` = 1
List<TenantAccount> tenantAccounts = mapper.selectAll(); List<TenantAccount> tenantAccounts = mapper.selectAll();
System.out.println(tenantAccounts); System.out.println(tenantAccounts);