Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.aoju.bus.mapper.criteria.SqlCriteria Maven / Gradle / Ivy
/*********************************************************************************
* *
* The MIT License (MIT) *
* *
* Copyright (c) 2015-2022 aoju.org mybatis.io and other contributors. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy *
* of this software and associated documentation files (the "Software"), to deal *
* in the Software without restriction, including without limitation the rights *
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell *
* copies of the Software, and to permit persons to whom the Software is *
* furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included in *
* all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN *
* THE SOFTWARE. *
* *
********************************************************************************/
package org.aoju.bus.mapper.criteria;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kimi Liu
* @since Java 17+
*/
public class SqlCriteria {
private Criteria criteria;
private SqlCriteria() {
this.criteria = new Criteria();
}
public static SqlCriteria custom() {
return new SqlCriteria();
}
public Criteria getCriteria() {
return criteria;
}
public SqlCriteria andIsNull(String property) {
this.criteria.criterions.add(new Criterion(property, "is null", "and"));
return this;
}
public SqlCriteria andIsNotNull(String property) {
this.criteria.criterions.add(new Criterion(property, "is not null", "and"));
return this;
}
public SqlCriteria andEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "=", "and"));
return this;
}
public SqlCriteria andNotEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<>", "and"));
return this;
}
public SqlCriteria andGreaterThan(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, ">", "and"));
return this;
}
public SqlCriteria andGreaterThanOrEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, ">=", "and"));
return this;
}
public SqlCriteria andLessThan(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<", "and"));
return this;
}
public SqlCriteria andLessThanOrEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<=", "and"));
return this;
}
public SqlCriteria andIn(String property, Iterable values) {
this.criteria.criterions.add(new Criterion(property, values, "in", "and"));
return this;
}
public SqlCriteria andNotIn(String property, Iterable values) {
this.criteria.criterions.add(new Criterion(property, values, "not in", "and"));
return this;
}
public SqlCriteria andBetween(String property, Object value1, Object value2) {
this.criteria.criterions.add(new Criterion(property, value1, value2, "between", "and"));
return this;
}
public SqlCriteria andNotBetween(String property, Object value1, Object value2) {
this.criteria.criterions.add(new Criterion(property, value1, value2, "not between", "and"));
return this;
}
public SqlCriteria andLike(String property, String value) {
this.criteria.criterions.add(new Criterion(property, value, "like", "and"));
return this;
}
public SqlCriteria andNotLike(String property, String value) {
this.criteria.criterions.add(new Criterion(property, value, "not like", "and"));
return this;
}
public SqlCriteria orIsNull(String property) {
this.criteria.criterions.add(new Criterion(property, "is null", "or"));
return this;
}
public SqlCriteria orIsNotNull(String property) {
this.criteria.criterions.add(new Criterion(property, "is not null", "or"));
return this;
}
public SqlCriteria orEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "=", "or"));
return this;
}
public SqlCriteria orNotEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<>", "or"));
return this;
}
public SqlCriteria orGreaterThan(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, ">", "or"));
return this;
}
public SqlCriteria orGreaterThanOrEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, ">=", "or"));
return this;
}
public SqlCriteria orLessThan(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<", "or"));
return this;
}
public SqlCriteria orLessThanOrEqualTo(String property, Object value) {
this.criteria.criterions.add(new Criterion(property, value, "<=", "or"));
return this;
}
public SqlCriteria orIn(String property, Iterable values) {
this.criteria.criterions.add(new Criterion(property, values, "in", "or"));
return this;
}
public SqlCriteria orNotIn(String property, Iterable values) {
this.criteria.criterions.add(new Criterion(property, values, "not in", "or"));
return this;
}
public SqlCriteria orBetween(String property, Object value1, Object value2) {
this.criteria.criterions.add(new Criterion(property, value1, value2, "between", "or"));
return this;
}
public SqlCriteria orNotBetween(String property, Object value1, Object value2) {
this.criteria.criterions.add(new Criterion(property, value1, value2, "not between", "or"));
return this;
}
public SqlCriteria orLike(String property, String value) {
this.criteria.criterions.add(new Criterion(property, value, "like", "or"));
return this;
}
public SqlCriteria orNotLike(String property, String value) {
this.criteria.criterions.add(new Criterion(property, value, "not like", "or"));
return this;
}
public static class Criteria {
private String andOr;
private List criterions;
public Criteria() {
this.criterions = new ArrayList<>(2);
}
public List getCriterions() {
return criterions;
}
public String getAndOr() {
return andOr;
}
public void setAndOr(String andOr) {
this.andOr = andOr;
}
}
public static class Criterion {
private String property;
private Object value;
private Object secondValue;
private String condition;
private String andOr;
public Criterion(String property, String condition, String andOr) {
this.property = property;
this.condition = condition;
this.andOr = andOr;
}
public Criterion(String property, Object value, String condition, String andOr) {
this.property = property;
this.value = value;
this.condition = condition;
this.andOr = andOr;
}
public Criterion(String property, Object value1, Object value2, String condition, String andOr) {
this.property = property;
this.value = value1;
this.secondValue = value2;
this.condition = condition;
this.andOr = andOr;
}
public String getProperty() {
return property;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public Object[] getValues() {
if (value != null) {
if (secondValue != null) {
return new Object[]{value, secondValue};
} else {
return new Object[]{value};
}
} else {
return new Object[]{};
}
}
public String getCondition() {
return condition;
}
public String getAndOr() {
return andOr;
}
}
}