mybatis 通用查询实现

package com.oceano.modity.entity;

import java.util.ArrayList;
import java.util.List;

public class CriteriaExample {
protected List<OrderByCase> orderByList;

protected boolean distinct;

protected List<Criteria> criteriaList;

public List<OrderByCase> getOrderByList() {
return orderByList;
}

public void setOrderByList(List<OrderByCase> orderByList) {
this.orderByList = orderByList;
}

public boolean isDistinct() {
return distinct;
}

public void setDistinct(boolean distinct) {
this.distinct = distinct;
}

public List<Criteria> getCriteriaList() {
return criteriaList;
}

public void setCriteriaList(List<Criteria> criteriaList) {
this.criteriaList = criteriaList;
}

@Override
public String toString() {
return "CriteriaExample [orderByList=" + orderByList + ", distinct=" + distinct + ", criteriaList="
+ criteriaList + ", getOrderByList()=" + getOrderByList() + ", isDistinct()=" + isDistinct()
+ ", getCriteriaList()=" + getCriteriaList() + ", getClass()=" + getClass() + ", hashCode()="
+ hashCode() + ", toString()=" + super.toString() + "]";
}

public CriteriaExample addOrderByCase(String field, String direction) {
if (this.orderByList == null) {
this.orderByList = new ArrayList<>();
}
this.orderByList.add(new OrderByCase(field, direction));
return (CriteriaExample) this;
}

public CriteriaExample addCriteria(Criteria criteria) {
if (this.criteriaList == null) {
this.criteriaList = new ArrayList<>();
}
this.criteriaList.add(criteria);
return (CriteriaExample) this;
}

public static class OrderByCase {
public static String ASC = "ASC";
public static String DESC = "DESC";
private String condition;
private String direction; // ASC,DESC

public String getCondition() {
return condition;
}

public void setCondition(String condition) {
this.condition = condition;
}

public String getDirection() {
return direction;
}

public void setDirection(String direction) {
this.direction = direction;
}

public OrderByCase(String condition, String direction) {
super();
this.condition = condition;
this.direction = direction;
}

@Override
public String toString() {
return "OrderByCase [condition=" + condition + ", direction=" + direction + "]";
}
}

protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;

protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}

public boolean isValid() {
return criteria.size() > 0;
}

public List<Criterion> getAllCriteria() {
return criteria;
}

public List<Criterion> getCriteria() {
return criteria;
}

protected void addCriterion(String condition, String property) {
if (condition == null) {
throw new RuntimeException("condition for " + property + " cannot be null");
}

criteria.add(new Criterion(condition));
}

protected void addCriterion(String condition, Object value, String property) {
if (condition == null) {
throw new RuntimeException("condition for " + property + " cannot be null");
}
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}

protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (condition == null) {
throw new RuntimeException("condition for " + property + " cannot be null");
}
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}

public Criteria equal(String field, Object value) {
addCriterion(field + " =", value, field);
return (Criteria) this;
}

public Criteria notEqual(String field, Object value) {
addCriterion(field + " <> ", value, field);
return (Criteria) this;
}

public Criteria greaterThan(String field, Object value) {
addCriterion(field + " > ", value, field);
return (Criteria) this;
}

public Criteria lessThan(String field, Object value) {
addCriterion(field + " < ", value, field);
return (Criteria) this;
}

public Criteria lessThanOrEqual(String field, Object value) {
addCriterion(field + " <= ", value, field);
return (Criteria) this;
}

public <T> Criteria in(String field, List<T> valueList) {
addCriterion(field + " in ", valueList, field);
return (Criteria) this;
}

public <T> Criteria notIn(String field, List<T> valueList) {
addCriterion(field + " not in ", valueList, field);
return (Criteria) this;
}

public Criteria between(String field, Object value1, Object value2) {
addCriterion(field + " between ", value1, value2, field);
return (Criteria) this;
}

public Criteria notBetween(String field, Object value1, Object value2) {
addCriterion(field + " not between ", value1, value2, field);
return (Criteria) this;
}

public Criteria isNull(String field) {
addCriterion(field + " is null ", field);
return (Criteria) this;
}

public Criteria isNotNull(String field) {
addCriterion(field + " is not null ", field);
return (Criteria) this;
}

public Criteria like(String field, Object value) {
addCriterion(field + " like concat(concat('%',\"" + value + "\",'%'))", field);
return (Criteria) this;
}

public Criteria notLike(String field, Object value) {
addCriterion(field + " not like concat(concat('%',\"" + value + "\",'%'))", field);
// addCriterion(field + " not like ", value, field);
return (Criteria) this;
}
}

public static class Criteria extends GeneratedCriteria {
public Criteria() {
super();
}

@Override
public String toString() {
return "Criteria [criteria=" + criteria + ", isValid()=" + isValid() + ", getAllCriteria()="
+ getAllCriteria() + ", getCriteria()=" + getCriteria() + ", getClass()=" + getClass()
+ ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]";
}

}

public static class Criterion {
private String condition;

private Object value;

private Object secondValue;

private boolean noValue;

private boolean singleValue;

private boolean betweenValue;

private boolean listValue;

private String typeHandler;

public String getCondition() {
return condition;
}

public Object getValue() {
return value;
}

public Object getSecondValue() {
return secondValue;
}

public boolean isNoValue() {
return noValue;
}

public boolean isSingleValue() {
return singleValue;
}

public boolean isBetweenValue() {
return betweenValue;
}

public boolean isListValue() {
return listValue;
}

public String getTypeHandler() {
return typeHandler;
}

protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}

protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}

protected Criterion(String condition, Object value) {
this(condition, value, null);
}

protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}

protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}

@Override
public String toString() {
return "Criterion [condition=" + condition + ", value=" + value + ", secondValue=" + secondValue
+ ", noValue=" + noValue + ", singleValue=" + singleValue + ", betweenValue=" + betweenValue
+ ", listValue=" + listValue + ", typeHandler=" + typeHandler + "]";
}

}

}



<!-- <trim prefix="(" suffix=")" prefixOverrides="OR"> -->
<sql id="Example_Where_Clause">
<if test="criteriaList != null">
<foreach collection="criteriaList" item="criteria" separator="AND">
<trim prefix="(" suffix=")">
<foreach collection="criteria.criteria" item="criterion"
separator="OR">
<choose>
<when test="criterion.noValue">
${criterion.condition}
</when>
<when test="criterion.singleValue">
${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
${criterion.condition} #{criterion.value} AND
#{criterion.secondValue}
</when>
<when test="criterion.listValue">
${criterion.condition}
<foreach collection="criterion.value" item="listItem"
open="(" close=")" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</foreach>
</if>
</sql>

<sql id="orderBy_case">
ORDER BY
<if test="orderByList !=null">
<foreach collection="orderByList" item="orderBy" separator=",">
${orderBy.condition} ${orderBy.direction}
</foreach>
</if>
</sql>




<select id="findByTest" parameterType="com.oceano.modity.entity.CriteriaExample"
resultMap="modityPriceList">
select * from t_modity_price
<where>
<include refid="Example_Where_Clause" />
</where>
<include refid="orderBy_case" />
</select>



@RequestMapping("/sqlTest")
@ResponseBody
public String sqlTest() {


CriteriaExample criteriaExample = new CriteriaExample();

criteriaExample.addOrderByCase("colour_id", OrderByCase.ASC);
criteriaExample.addOrderByCase("colour_code", OrderByCase.DESC);

criteriaExample.setDistinct(true);


Criteria criteria1 =new Criteria();
criteria1.equal("colour_id", "Yellow");

criteriaExample.addCriteria(criteria1);


// Criteria criteria2 =new Criteria();
// criteria2.notEqual("colour_code","test");
//
// criteriaExample.addCriteria(criteria2);

Criteria criteria2 =new Criteria();
criteria2.between("colour_id", 4, 5);

criteriaExample.addCriteria(criteria2);
//
Criteria criteria3 =new Criteria();
criteria3.like("colour_id", "yellow");
criteria3.like("colour_code", "黄色");

criteriaExample.addCriteria(criteria3);

Criteria criteria4 =new Criteria();
List<String> list = new ArrayList<>();
list.add("123");
list.add("456");

criteria4.in("colour_id", list);
criteria4.like("colour_code", "黄色");

criteriaExample.addCriteria(criteria4);

// Criteria criteria4 =new Criteria();
// List<String> list = new ArrayList<>();
// list.add("123");
// list.add("456");
//
// criteria3.in("colour_id", list);
// criteria3.like("colour_code", "黄色");
//
// criteriaExample.addCriteria(criteria4);



List<T_ModityPrice> modityPriceList = modityPriceService.findByTest(criteriaExample);




return "OK";

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jie310600

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值