
net.dongliu.dbutils.sqlbuilder.BuilderMixin Maven / Gradle / Ivy
package net.dongliu.dbutils.sqlbuilder;
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.Nullable;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
* Used to share code between SQLBuilder and HubNode
*
* @author Liu Dong
*/
public interface BuilderMixin> {
/**
* Get the hub node
*/
HubNode hubNode();
/**
* Get self reference
*/
T self();
/**
* Append new sql segment. Will insert white space if need
*/
default T append(String sqlSegment) {
if (sqlSegment.isEmpty()) {
return self();
}
hubNode().addNode(new ClauseNode(sqlSegment));
return self();
}
/**
* Append new value.
*/
default T param(@Nullable Object value) {
hubNode().addNode(new ParamNode(value));
return self();
}
/**
* Append multi param, separated by ',' in sql clause
*/
default T param(Object... values) {
return param(Lists.of(values));
}
/**
* Append multi param, separated by ',' in sql clause
*/
default T param(Collection> values) {
hubNode().addNode(new ParamsNode(values));
return self();
}
/**
* Select
*/
default T select(String name) {
return append("SELECT " + name);
}
/**
* Select
*/
default T select(String... names) {
return append("SELECT " + String.join(", ", (CharSequence[]) names));
}
/**
* Select
*/
default T select(Collection names) {
return append("SELECT " + String.join(", ", names));
}
/**
* From
*/
default T from(String table) {
return append("FROM " + table);
}
default T update(String table) {
return append("UPDATE " + table);
}
/**
* insert into
*/
default T insertInto(String table, CharSequence... columns) {
return append("INSERT INTO " + table + "(" + String.join(", ", columns) + ")");
}
/**
* insert into
*/
default T insertInto(String table, Collection columns) {
return append("INSERT INTO " + table + "(" + String.join(", ", columns) + ")");
}
/**
* Used with insert Into, set values
*/
default T values(Object... values) {
return values(Lists.of(values));
}
/**
* Used with insert Into, set value
*/
default T values(List> values) {
return append("VALUES(").param(values).append(")");
}
/**
* Combine insert into and values
*/
default T insertValues(String table, Map values) {
return insertValues(table, values.entrySet());
}
/**
* Combine insert into and values
*/
default T insertValues(String table, Collection extends Map.Entry> values) {
List columns = values.stream().map(v -> v.getKey()).collect(Collectors.toList());
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy