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

com.jfinal.ext.kit.SqlKit Maven / Gradle / Ivy

There is a newer version: 4.0.3
Show newest version
/**
 * Copyright (c) 2018, Jobsz ([email protected]).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jfinal.ext.kit;

/**
 * @author Jobsz
 *
 */
final public class SqlKit {
	
	public static final String select = "SELECT";
	public static final String update = "UPDATE";
	public static final String set = "SET";
	public static final String insert = "INSERT INTO";
	public static final String values = "VALUES";
	public static final String from = "FROM";
	public static final String where = "WHERE";
	public static final String like = "LIKE";
	public static final String and = "AND";
	public static final String or = "OR";
	public static final String orderby = "ORDER BY";
	public static final String limit = "LIMIT";

	private static final String sapce = " ";
	private StringBuilder sql = null;

	private enum ORDER{
		DESC,
		ASC
	};
	
	private SqlKit orderBy(String condition, ORDER order){
		sql.append(SqlKit.orderby).append(SqlKit.sapce).append(condition).append(SqlKit.sapce).append(order.toString());
		return this;
	}
	
	public static class Column {
		
		private String colName = null;
		private String as = null;
		
		public Column(String colName, String as) {
			this.colName = colName;
			this.as = as;
		}
		
		public String column() {
			return new StringBuilder(this.colName).append(SqlKit.sapce).append(this.as).toString();
		}
	}

	//==========================
	
	public SqlKit(){
		sql = new StringBuilder();
	}
	
	public SqlKit select(String... selects){
		sql.append(SqlKit.select).append(SqlKit.sapce);
		int index = 0;
		for (String string : selects) {
			sql.append(string);
			if (index != selects.length - 1) {
				sql.append(",").append(SqlKit.sapce);
			} else {
				sql.append(SqlKit.sapce);
			}
			index++;
		}
		return this;
	}
	
	public Column column(String col, String as) {
		return new Column(col, as);
	}
	
	public SqlKit select(Column... cols) {
		sql.append(SqlKit.select).append(SqlKit.sapce);
		int index = 0;
		for (Column col : cols) {
			sql.append(col.column());
			if (index != cols.length - 1) {
				sql.append(",").append(SqlKit.sapce);
			} else {
				sql.append(SqlKit.sapce);
			}
			index++;
		}
		return this;
	}
	
	public SqlKit update(String tableName) {
		sql.append(SqlKit.update).append(SqlKit.sapce).append(tableName).append(SqlKit.sapce);
		return this;
	}
	
	/**
	 * set("name","新的值","addr","新的值")
	 * @param columns
	 * @return
	 */
	public SqlKit set(Object... columnsValues) {
		int len = columnsValues.length;
		if (len % 2 != 0) {
			throw new IllegalArgumentException("wrong number of arguments for set, columnsValues length can not be odd");
		}
		sql.append(SqlKit.set).append(SqlKit.sapce);
		
		StringBuilder column = null;
		for (int index = 0; index < len; index++) {
			column = new StringBuilder();
			if (index % 2 == 0) {
				column.append(columnsValues[index]).append(SqlKit.sapce).append("=");
			} else {
				column.append(columnsValues[index]);
				if (index != len - 1) {
					column.append(",");
				}
			}
			sql.append(column).append(SqlKit.sapce);
		}
		return this;
	}
	
	public SqlKit insert(String tableName) {
		sql.append(SqlKit.insert)
		.append(SqlKit.sapce)
		.append(tableName)
		.append(SqlKit.sapce);
		return this;
	}
	
	public SqlKit values(Object... columnsValues) {
		int len = columnsValues.length;
		if (len % 2 != 0) {
			throw new IllegalArgumentException("wrong number of arguments for values, columnsValues length can not be odd");
		}
		
		sql.append(SqlKit.values).append(SqlKit.sapce);
		sql.append("(").append(SqlKit.sapce);
		StringBuilder column = null;
		for (int index = 0; index < len; index++) {
			column = new StringBuilder();
			if (index % 2 == 0) {
				column.append(columnsValues[index]).append(SqlKit.sapce).append("=");
			} else {
				column.append(columnsValues[index]);
				if (index != len - 1) {
					column.append(",");
				}
			}
			sql.append(column).append(SqlKit.sapce);
		}
		sql.append(")");
		return this;
	}
	
	public SqlKit from(String... tableNames){
		sql.append(SqlKit.from).append(SqlKit.sapce);
		int index = 0;
		for (String string : tableNames) {
			sql.append(string);
			if (index != tableNames.length - 1) {
				sql.append(",").append(SqlKit.sapce);
			}else {
				sql.append(SqlKit.sapce);
			}
			index++;
		}
		return this;
	}
	
	public SqlKit where(String where){
		sql.append(SqlKit.where).append(SqlKit.sapce).append(where).append(SqlKit.sapce);
		return this;
	}
	
	//TODO 未完成
	public SqlKit like(String like) {
		throw new IllegalArgumentException("not finished");
//		sql.append(SqlKit.where).append(SqlKit.sapce).append(SqlKit.like).append(SqlKit.sapce);
//		return this;
	}
	
	public SqlKit and(String condition){
		sql.append(SqlKit.and).append(SqlKit.sapce).append(condition).append(SqlKit.sapce);
		return this;
	}
	
	public SqlKit or(String condition){
		sql.append(SqlKit.or).append(SqlKit.sapce).append(condition).append(SqlKit.sapce);
		return this;
	}
	
	public SqlKit ascOrderBy(String condition) {
		return this.orderBy(condition, ORDER.ASC);
	}
	
	public SqlKit descOrderBy(String condition) {
		return this.orderBy(condition, ORDER.DESC);
	}

	public SqlKit limit(String... params) {
		if (params.length > 2) {
			throw new IllegalArgumentException("more params");
		}
		
		sql.append(SqlKit.sapce).append(SqlKit.limit).append(SqlKit.sapce);
		
		int index = 0;
		for (String param : params) {
			sql.append(param);
			if (index != params.length - 1) {
				sql.append(",").append(SqlKit.sapce);
			}else {
				sql.append(SqlKit.sapce);
			}
			index++;
		}
		return this;
	}
	
	public SqlKit append(String append) {
		sql.append(append);
		return this;
	}
	
	public String sql(){
		String _sql = sql.toString();
		if (!_sql.endsWith(";")) {
			sql.append(";");
			return sql.toString();
		}
		return _sql;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy