![JAR search and dependency download from the Maven repository](/logo.png)
net.dongliu.dbutils.builder.SQLBuilder Maven / Gradle / Ivy
package net.dongliu.dbutils.builder;
import net.dongliu.commons.collection.Lists;
import net.dongliu.commons.collection.Pair;
import net.dongliu.dbutils.exception.SQLBuilderException;
import net.dongliu.dbutils.mapping.BeanMapping;
import net.dongliu.dbutils.mapping.BeanMappingUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;
import java.util.stream.Stream;
import static java.util.stream.Collectors.*;
/**
* Sql Builder
*
* @author Liu Dong
*/
public class SQLBuilder extends SQLNode {
private final List list = new ArrayList<>();
public SQLBuilder() {
}
public SQLBuilder(String str) {
append(str);
}
/**
* Build to get sql
*/
public SQLHolder build() {
SQLSegment segment = segment();
String sql = segment.getClauses().map(String::trim).filter(it -> !it.isEmpty())
.collect(joining(" "));
Object[] params = segment.getParams().toArray();
return new SQLHolder(sql, params);
}
/**
* Append new sql segment. Will insert white space if need
*/
public SQLBuilder append(String sqlSegment) {
if (sqlSegment.isEmpty()) {
return this;
}
addNode(new ClauseNode(sqlSegment));
return this;
}
private void addNode(SQLNode node) {
list.add(node);
}
/**
* Append new value.
*/
public SQLBuilder param(@Nullable Object value) {
addNode(new ParamNode(value));
return this;
}
/**
* Append multi param, separated by ',' in sql clause
*/
public SQLBuilder param(Object... values) {
return param(Lists.of(values));
}
/**
* Append multi param, separated by ',' in sql clause
*/
public SQLBuilder param(Collection> values) {
addNode(new ParamsNode(values));
return this;
}
/**
* Select
*/
public SQLBuilder select(String name) {
return append("SELECT " + name);
}
/**
* Select
*/
public SQLBuilder select(String... names) {
return append("SELECT " + String.join(", ", (CharSequence[]) names));
}
/**
* Select
*/
public SQLBuilder select(Collection names) {
return append("SELECT " + String.join(", ", names));
}
/**
* From
*/
public SQLBuilder from(String table) {
return append("FROM " + table);
}
public SQLBuilder update(String table) {
return append("UPDATE " + table);
}
/**
* insert into
*/
public SQLBuilder insertInto(String table, CharSequence... columns) {
return append("INSERT INTO " + table + "(" + String.join(", ", columns) + ")");
}
/**
* insert into
*/
public SQLBuilder insertInto(String table, Collection columns) {
return append("INSERT INTO " + table + "(" + String.join(", ", columns) + ")");
}
/**
* Used with insert Into, set values
*/
public SQLBuilder values(Object... values) {
return values(Lists.of(values));
}
/**
* Used with insert Into, set value
*/
public SQLBuilder values(List> values) {
return append("VALUES(").param(values).append(")");
}
/**
* Combine insert into and values
*/
public SQLBuilder insertValues(String table, Map values) {
return insertValues(table, values.entrySet());
}
/**
* Combine insert into and values
*/
public SQLBuilder insertValues(String table, Collection extends Map.Entry> values) {
List columns = values.stream().map(v -> v.getKey()).collect(toList());
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy