
com.github.yulichang.extension.mapping.wrapper.MappingQuery Maven / Gradle / Ivy
package com.github.yulichang.extension.mapping.wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.enums.SqlKeyword;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.extension.mapping.mapper.MPJMappingWrapper;
import com.github.yulichang.extension.mapping.mapper.MPJTableFieldInfo;
import java.util.List;
public class MappingQuery extends QueryWrapper {
/**
* 公开 addCondition 方法
*/
@Override
public QueryWrapper addCondition(boolean condition, String column, SqlKeyword sqlKeyword, Object val) {
return super.addCondition(condition, column, sqlKeyword, val);
}
/**
* 映射 wrapper 构造器
* 仅对使用映射注解时使用
*/
public static List> mpjQueryList(BaseMapper baseMapper, SqlKeyword keyword,
String column, Object val, MPJTableFieldInfo fieldInfo) {
MPJMappingWrapper infoWrapper = fieldInfo.getWrapper();
MappingQuery wrapper = new MappingQuery<>();
if (infoWrapper.isHasCondition()) {
infoWrapper.getConditionList().forEach(c -> {
if (c.getKeyword() == SqlKeyword.BETWEEN) {
wrapper.between(c.getColumn(), c.getVal()[0], c.getVal()[1]);
} else if (c.getKeyword() == SqlKeyword.IN) {
wrapper.in(c.getColumn(), (Object[]) c.getVal());
} else {
wrapper.addCondition(true, c.getColumn(),
c.getKeyword(), c.getVal()[0]);
}
});
}
wrapper.eq(SqlKeyword.EQ == keyword, column, val);
//此处不用链式调用,提高效率
if (infoWrapper.isHasFirst()) {
wrapper.first(infoWrapper.getFirst());
}
if (infoWrapper.isHasOrderByAsc()) {
//mybatis plus 3.4.3 之后支持数组,但之前版本仅支持可变参数,为了兼容,多个循环处理
infoWrapper.getOrderByAsc().forEach(wrapper::orderByAsc);
}
if (infoWrapper.isHasOrderByDesc()) {
//mybatis plus 3.4.3 之后支持数组,但之前版本仅支持可变参数,为了兼容,多个循环处理
infoWrapper.getOrderByDesc().forEach(wrapper::orderByDesc);
}
if (infoWrapper.isHasLast()) {
wrapper.last(infoWrapper.getLast());
}
if (SqlKeyword.IN == keyword) {
wrapper.in(column, (List>) val);
}
if (infoWrapper.isHasSelect()) {
wrapper.select(infoWrapper.getSelect());
}
if (infoWrapper.isHasApply()) {
infoWrapper.getApplyList().forEach(a -> wrapper.apply(a.getSql(), (Object[]) a.getVal()));
}
return baseMapper.selectList(wrapper);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy