All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vertx.ext.sql.assist.SqlWhereCondition Maven / Gradle / Ivy

package io.vertx.ext.sql.assist;

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

import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

/**
 * SqlAssist的条件类,require属性为列的条件,value和values为条件值
 * 
 * @author Mirren
 * @param 
 */
public class SqlWhereCondition {
	/** 条件 */
	private String require;
	/** 条件值,单个 */
	private T value;
	/** 条件值,多个 */
	private Object[] values;

	/**
	 * 将当前对象装换为JsonObject
	 * 
	 * @return
	 */
	public JsonObject toJson() {
		JsonObject json = new JsonObject();
		if (require != null) {
			json.put("require", require);
		}
		if (value != null) {
			json.put("value", value);
		}
		if (values != null) {
			JsonArray array = new JsonArray();
			for (int i = 0; i < values.length; i++) {
				array.add(values[i]);
			}
			json.put("values", array);
		}
		return json;
	}

	/**
	 * 将一个JsonObject对象装换为SqlWhereCondition
	 * 
	 * @param obj
	 * @return
	 */
	public static SqlWhereCondition fromJson(JsonObject obj) {
		SqlWhereCondition condition = new SqlWhereCondition<>();
		if (obj.getValue("require") instanceof String) {
			condition.setRequire(obj.getString("require"));
		}
		if (obj.getValue("value") != null) {
			condition.setValue(obj.getValue("value"));
		}
		if (obj.getValue("values") instanceof JsonArray) {
			List list = new ArrayList<>();
			obj.getJsonArray("values").forEach(va -> {
				list.add(va);
			});
			condition.setValues(list.toArray());
		}
		return condition;
	}

	public SqlWhereCondition() {
		super();
	}

	public SqlWhereCondition(String require, T value) {
		super();
		this.require = require;
		this.value = value;
	}

	public SqlWhereCondition(String require, Object... values) {
		super();
		this.require = require;
		this.values = values;
	}

	/**
	 * SQL: [and] column = value 
* 注释: 并且列名=条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andEq(String column, T value) { return new SqlWhereCondition("and " + column + " = ? ", value); } /** * SQL: [or] column = value
* 注释: 或者列名=条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orEq(String column, T value) { return new SqlWhereCondition("or " + column + " = ? ", value); } /** * SQL: [and] column <> value
* 解释: 并且列名不等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andNeq(String column, T value) { return new SqlWhereCondition("and " + column + " <> ? ", value); } /** * SQL: [or] column <> value
* 解释: 或者列名不等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orNeq(String column, T value) { return new SqlWhereCondition("or " + column + " <> ? ", value); } /** * SQL: [and] column < value
* 解释: 并且列名小于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andLt(String column, T value) { return new SqlWhereCondition("and " + column + " < ? ", value); } /** * SQL: [or] column < value
* 解释: 或者列名小于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orLt(String column, T value) { return new SqlWhereCondition("or " + column + " < ? ", value); } /** * SQL: [and] column <= value
* 解释: 并且列名小于等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andLte(String column, T value) { return new SqlWhereCondition("and " + column + " <= ? ", value); } /** * SQL: [or] column <= value
* 解释: 或者列名小于等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orLte(String column, T value) { return new SqlWhereCondition("or " + column + " <= ? ", value); } /** * SQL: [and] column > value
* 解释: 并且列名大于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andGt(String column, T value) { return new SqlWhereCondition("and " + column + " > ? ", value); } /** * SQL: [or] column > value
* 解释: 或者列名大于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orGt(String column, T value) { return new SqlWhereCondition("or " + column + " > ? ", value); } /** * SQL: [and] column >= value
* 解释: 并且列名大于等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition andGte(String column, T value) { return new SqlWhereCondition("and " + column + " >= ? ", value); } /** * SQL: [or] column >= value
* 解释: 或者列名大于等于条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值 * @return */ public static SqlWhereCondition orGte(String column, T value) { return new SqlWhereCondition("or " + column + " >= ? ", value); } /** * SQL: [and] column like value
* 解释: 并且列名like条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值,通配符需要自己添加 * @return */ public static SqlWhereCondition andLike(String column, T value) { return new SqlWhereCondition("and " + column + " like ? ", value); } /** * SQL: [or] column like value
* 解释: 或者列名like条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值,通配符需要自己添加 * @return */ public static SqlWhereCondition orLike(String column, T req) { return new SqlWhereCondition("or " + column + " like ? ", req); } /** * SQL: [and] column not like value
* 解释: 并且列名not like条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值,通配符需要自己添加 * @return */ public static SqlWhereCondition andNotLike(String column, T value) { return new SqlWhereCondition("and " + column + " not like ? ", value); } /** * SQL: [or] column not like value
* 解释: 或者列名 not like条件值 * * @param column * 列名,如果存在相同列名则使用表名.列名 * @param value * 条件值,通配符需要自己添加 * @return */ public static SqlWhereCondition orNotLike(String column, T req) { return new SqlWhereCondition("or " + column + " not like ? ", req); } /** * SQL: [and] column is null
* 解释: 或者列名is null * * @param column * 列名,如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition andIsNull(String column) { return new SqlWhereCondition("and " + column + " is null "); } /** * SQL: [or] column is null
* 解释: 或者列名is null * * @param column * 列名,如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition orIsNull(String column) { return new SqlWhereCondition("or " + column + " is null "); } /** * SQL: [and] column is not null
* 解释: 或者列名is not null * * @param column * 列名,如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition andIsNotNull(String column) { return new SqlWhereCondition("and " + column + " is not null "); } /** * SQL: [or] column is not null
* 解释: 或者列名is not null * * @param column * 列名,如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition orIsNotNull(String column) { return new SqlWhereCondition("or " + column + " is not null "); } /** * SQL: [and] column [Syntax]
* 解释: 并且列名表达式,比如colum is null * * @param column * 列名[与表达式],如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition and(String column) { return new SqlWhereCondition("and " + column + " "); } /** * SQL: [or] column [Syntax]
* 解释: 或者列名表达式,比如colum is null * * @param column * 列名[与表达式],如果存在相同列名则使用表名.列名 * @return */ public static SqlWhereCondition or(String column) { return new SqlWhereCondition("or " + column + " "); } /** * 自定义查询条件:
* 示例 :
* prefix=and id in(select tid from table where w=?)
* value=1
* * @param prefix * SQL语句与条件值占位符 * @param value * 条件值 * @return */ public static SqlWhereCondition customCondition(String prefix, T value) { return new SqlWhereCondition(prefix, value); } /** * 自定义查询条件 :
* 示例 :
* prefix=and id in(?,?,?)
* value=1,2,3
* * @param prefix * SQL语句与条件值占位符 * @param value * 条件值 * @return */ public static SqlWhereCondition customCondition(String prefix, Object... value) { return new SqlWhereCondition(prefix, value); } public String getRequire() { return require; } public void setRequire(String require) { this.require = require; } public T getValue() { return value; } public void setValue(T value) { this.value = value; } public Object[] getValues() { return values; } public void setValues(Object[] values) { this.values = values; } @Override public String toString() { return "SqlWhereCondition [require=" + require + ", value=" + value + ", values=" + Arrays.toString(values) + "]"; } }