table bug fixes

This commit is contained in:
Shaun Chyxion 2017-06-27 00:18:42 +08:00
parent 135462990c
commit 3136e1a364
3 changed files with 32 additions and 6 deletions

View File

@ -1,5 +1,7 @@
package me.chyxion.tigon.mybatis;
import org.apache.commons.lang3.StringUtils;
/**
* @author Donghuang <br>
* donghuang@wacai.com <br>
@ -20,6 +22,10 @@ class AndSearchProcessor extends AbstractSearchProcessor {
*/
@Override
void doProcess(SearchProcessArgs args) {
args.getResult().addAll(args.getCondition().getSearch().assemble(true));
final Search search = args.getCondition().getSearch();
if (StringUtils.isBlank(search.table())) {
search.table(args.getTable());
}
args.getResult().addAll(search.assemble(true));
}
}

View File

@ -1,5 +1,7 @@
package me.chyxion.tigon.mybatis;
import org.apache.commons.lang3.StringUtils;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
@ -7,11 +9,17 @@ package me.chyxion.tigon.mybatis;
*/
class OrSearchProcessor implements SearchProcessor {
/**
* {@inheritDoc}
*/
@Override
public boolean accept(SearchProcessArgs args) {
return CriterionType.OR.equals(args.getCondition().getType());
}
/**
* {@inheritDoc}
*/
@Override
public void process(SearchProcessArgs args) {
if (args.isHasPrevCol()) {
@ -20,6 +28,10 @@ class OrSearchProcessor implements SearchProcessor {
else {
args.setHasPrevOrCol(true);
}
args.getResult().addAll(args.getCondition().getSearch().assemble(true));
final Search search = args.getCondition().getSearch();
if (StringUtils.isBlank(search.table())) {
search.table(args.getTable());
}
args.getResult().addAll(search.assemble(true));
}
}

View File

@ -483,12 +483,20 @@ public class Search implements Serializable {
return this;
}
/**
* get table
* @return table
*/
String table() {
return this.table;
}
List<Object> assemble(boolean subSearch) {
List<Object> result = new LinkedList<Object>();
SearchProcessArgs args = new SearchProcessArgs(table, result);
for (Criterion condition : criteria) {
args.setCondition(condition);
for (SearchProcessor processor : PROCESSORS) {
final SearchProcessArgs args = new SearchProcessArgs(table, result);
for (final Criterion criterion : criteria) {
args.setCondition(criterion);
for (final SearchProcessor processor : PROCESSORS) {
if (processor.accept(args)) {
processor.process(args);
break;