
nablarch.common.dao.StandardSqlBuilder Maven / Gradle / Ivy
The newest version!
package nablarch.common.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import jakarta.persistence.Entity;
import nablarch.core.util.StringUtil;
import nablarch.core.util.annotation.Published;
/**
* ユニバーサルDAOで使用するSQL文を構築するクラス。
*
* 生成するSQL文は以下のとおり。
*
*
* - ID列を条件としたSELECT文
* - 条件なしのSELECT文
* - ID列を条件としたUPDATE文(バージョンカラムがある場合はそのカラムも条件に含まれる)
* - ID列を条件としたDELETE文
* - 全カラムを対象としたINSERT文(IDENTITYカラムはサポートしない)
*
*
* @author hisaaki sioiri
*/
@Published(tag = "architect")
public class StandardSqlBuilder {
/**
* ID列を条件として全カラムの情報を取得するSQL文を構築する。
*
* @param entityClass エンティティクラス
* @param 型パラメータ
* @return ID列を条件としたSQL文
*/
public String buildSelectByIdSql(final Class entityClass) {
return buildSelectAllSql(entityClass)
+ ' ' + buildIdCondition(entityClass);
}
/**
* 全レコード検索(条件なし)のSQL文を構築する。
*
* @param entityClass エンティティクラス
* @param 型パラメータ
* @return 条件なしのSELECT文
*/
public String buildSelectAllSql(final Class entityClass) {
final StringBuilder sql = new StringBuilder(512);
sql.append("SELECT ");
final List columns = EntityUtil.findAllColumns(entityClass);
final List columnNames = new ArrayList(columns.size());
for (ColumnMeta column : columns) {
columnNames.add(column.getName());
}
sql.append(StringUtil.join(",", columnNames));
sql.append(" FROM ")
.append(EntityUtil.getTableNameWithSchema(entityClass));
return sql.toString();
}
/**
* ID列を条件とした更新用のSQL文を構築する。
*
* @param entity エンティティ情報
* @param 型
* @return 更新用のSQL文
*/
public SqlWithParams buildUpdateSql(final T entity) {
final BatchSqlWithColumns sqlWithColumns = buildBatchUpdateSql(entity.getClass());
final Map columns = EntityUtil.findAllColumns(entity);
final List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy