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";
}