public abstract class Dialect extends Object
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
keepByteAndShort |
protected ModelBuilder |
modelBuilder |
protected RecordBuilder |
recordBuilder |
| Constructor and Description |
|---|
Dialect() |
| Modifier and Type | Method and Description |
|---|---|
<T> List<T> |
buildModelList(ResultSet rs,
Class<? extends Model> modelClass) |
List<Row> |
buildRecordList(Config config,
ResultSet rs) |
List<Row> |
buildRecordListWithJsonFields(Config config,
ResultSet rs,
String[] jsonFields) |
<T> void |
eachModel(ResultSet rs,
Class<? extends Model> modelClass,
java.util.function.Function<T,Boolean> func) |
void |
eachRecord(Config config,
ResultSet rs,
java.util.function.Function<Row,Boolean> func) |
void |
fillPst(PreparedStatement pst,
int i,
Object value) |
void |
fillStatement(PreparedStatement pst,
List<Object> paras) |
void |
fillStatement(PreparedStatement pst,
Object... paras) |
abstract String |
forColumns(String columns) |
abstract void |
forDbDelete(String tableName,
String[] pKeys,
Row record,
StringBuilder sql,
List<Object> paras) |
abstract String |
forDbDeleteByField(String tableName,
String field) |
abstract String |
forDbDeleteById(String tableName,
String[] pKeys) |
abstract StringBuffer |
forDbFind(String tableName,
String columns,
Row record,
List<Object> paras) |
abstract StringBuffer |
forDbFindByField(String tableName,
String columns,
String field,
Object fieldValue,
List<Object> paras) |
abstract String |
forDbFindById(String tableName,
String[] pKeys) |
abstract String |
forDbFindColumns(String tableName,
String columns) |
abstract String |
forDbFindColumnsById(String tableName,
String columns,
String[] pKeys) |
abstract void |
forDbSave(String tableName,
String[] pKeys,
Row record,
StringBuilder sql,
List<Object> paras) |
abstract void |
forDbSaveIfAbset(String tableName,
String[] pKeys,
Row record,
StringBuilder sql,
List<Object> paras) |
abstract void |
forDbUpdate(String tableName,
String[] pKeys,
Object[] ids,
Row record,
StringBuilder sql,
List<Object> paras) |
abstract void |
forDbUpdate(String tableName,
String[] pKeys,
Object[] ids,
Row record,
StringBuilder sql,
List<Object> paras,
String[] jsonFields) |
abstract String |
forExistsByFields(String tableName,
String fields) |
String |
forFindAll(String tableName) |
abstract String |
forModelDeleteById(Table table) |
abstract String |
forModelFindById(Table table,
String columns) |
abstract void |
forModelSave(Table table,
Map<String,Object> attrs,
StringBuilder sql,
List<Object> paras) |
abstract void |
forModelUpdate(Table table,
Map<String,Object> attrs,
Set<String> modifyFlag,
StringBuilder sql,
List<Object> paras) |
abstract String |
forPaginate(int pageNumber,
int pageSize,
StringBuilder findSql) |
String |
forPaginateTotalRow(String select,
String sqlExceptSelect,
Object ext)
为分页方法生成查询 totalRow 值的 sql
|
abstract String |
forTableBuilderDoBuild(String tableName) |
String |
getDefaultPrimaryKey() |
void |
getModelGeneratedKey(Model<?> model,
PreparedStatement pst,
Table table)
用于获取 Model.save() 以后自动生成的主键值,可通过覆盖此方法实现更精细的控制
目前只有 PostgreSqlDialect,覆盖过此方法
|
void |
getRecordGeneratedKey(PreparedStatement pst,
Row record,
String[] pKeys)
用于获取 Db.save(tableName, record) 以后自动生成的主键值,可通过覆盖此方法实现更精细的控制
目前只有 PostgreSqlDialect,覆盖过此方法
|
boolean |
isKeepByteAndShort()
指示 MetaBuilder 生成的 ColumnMeta.javaType 是否保持住 Byte、Short 类型
进而 BaseModelBuilder 生成针对 Byte、Short 类型的获取方法:
getByte(String)、getShort(String)
|
boolean |
isOracle() |
boolean |
isPrimaryKey(String colName,
String[] pKeys) |
boolean |
isTakeOverDbPaginate() |
boolean |
isTakeOverModelPaginate() |
protected void |
processGeneratedBigIntegerKey(Model<?> model,
String pKey,
Object v)
mysql 数据库的 bigint unsigned 对应的 java 类型为 BigInteger
但是 rs.getObject(1) 返回值为 Long 型,造成 model.save() 以后
model.getId() 时的类型转换异常
|
Dialect |
setKeepByteAndShort(boolean keepByteAndShort)
指示 Generator、ModelBuilder、RecordBuilder 是否保持住 Byte、Short 类型
|
Dialect |
setModelBuilder(ModelBuilder modelBuilder)
配置自定义 ModelBuilder
|
Dialect |
setRecordBuilder(RecordBuilder recordBuilder)
配置自定义 RecordBuilder
|
<T> com.litongjava.model.page.Page<T> |
takeOverDbPaginate(Connection conn,
int pageNumber,
int pageSize,
Boolean isGroupBySql,
String totalRowSql,
StringBuilder findSql,
Object... paras) |
com.litongjava.model.page.Page |
takeOverModelPaginate(Connection conn,
Class<? extends Model> modelClass,
int pageNumber,
int pageSize,
Boolean isGroupBySql,
String totalRowSql,
StringBuilder findSql,
Object... paras) |
abstract void |
transformJsonFields(List<Row> modelOrRecordList,
String[] jsonFields) |
abstract void |
transformJsonFields(Row record,
String[] jsonFields) |
void |
trimPrimaryKeys(String[] pKeys) |
protected boolean keepByteAndShort
protected ModelBuilder modelBuilder
protected RecordBuilder recordBuilder
public abstract String forPaginate(int pageNumber, int pageSize, StringBuilder findSql)
public abstract void forModelSave(Table table, Map<String,Object> attrs, StringBuilder sql, List<Object> paras)
public abstract void forModelUpdate(Table table, Map<String,Object> attrs, Set<String> modifyFlag, StringBuilder sql, List<Object> paras)
public abstract String forDbFindColumnsById(String tableName, String columns, String[] pKeys)
public abstract StringBuffer forDbFind(String tableName, String columns, Row record, List<Object> paras)
public abstract StringBuffer forDbFindByField(String tableName, String columns, String field, Object fieldValue, List<Object> paras)
public abstract void forDbSave(String tableName, String[] pKeys, Row record, StringBuilder sql, List<Object> paras)
public abstract void forDbSaveIfAbset(String tableName, String[] pKeys, Row record, StringBuilder sql, List<Object> paras)
public abstract void forDbDelete(String tableName, String[] pKeys, Row record, StringBuilder sql, List<Object> paras)
public abstract void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Row record, StringBuilder sql, List<Object> paras)
public abstract void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Row record, StringBuilder sql, List<Object> paras, String[] jsonFields)
public abstract void transformJsonFields(List<Row> modelOrRecordList, String[] jsonFields)
public Dialect setKeepByteAndShort(boolean keepByteAndShort)
public boolean isKeepByteAndShort()
public Dialect setModelBuilder(ModelBuilder modelBuilder)
通过继承扩展 ModelBuilder 可以对 JDBC 到 java 数据类型进行定制化转换 不同数据库从 JDBC 到 java 数据类型的映射关系有所不同
此外,还可以通过改变 ModelBuilder.buildLabelNamesAndTypes() 方法逻辑,实现下划线字段名转驼峰变量名的功能
public Dialect setRecordBuilder(RecordBuilder recordBuilder)
通过继承扩展 RecordBuilder 可以对 JDBC 到 java 数据类型进行定制化转换 不同数据库从 JDBC 到 java 数据类型的映射关系有所不同
此外,还可以通过改变 RecordBuilder.buildLabelNamesAndTypes() 方法逻辑,实现下划线字段名转驼峰变量名的功能
public <T> List<T> buildModelList(ResultSet rs, Class<? extends Model> modelClass) throws SQLException, ReflectiveOperationException
public <T> void eachModel(ResultSet rs, Class<? extends Model> modelClass, java.util.function.Function<T,Boolean> func) throws SQLException, ReflectiveOperationException
public List<Row> buildRecordList(Config config, ResultSet rs) throws SQLException
SQLExceptionpublic List<Row> buildRecordListWithJsonFields(Config config, ResultSet rs, String[] jsonFields) throws SQLException
SQLExceptionpublic void eachRecord(Config config, ResultSet rs, java.util.function.Function<Row,Boolean> func) throws SQLException
SQLExceptionpublic void getModelGeneratedKey(Model<?> model, PreparedStatement pst, Table table) throws SQLException
SQLExceptionprotected void processGeneratedBigIntegerKey(Model<?> model, String pKey, Object v)
public void getRecordGeneratedKey(PreparedStatement pst, Row record, String[] pKeys) throws SQLException
SQLExceptionpublic boolean isOracle()
public boolean isTakeOverDbPaginate()
public <T> com.litongjava.model.page.Page<T> takeOverDbPaginate(Connection conn, int pageNumber, int pageSize, Boolean isGroupBySql, String totalRowSql, StringBuilder findSql, Object... paras) throws SQLException
SQLExceptionpublic boolean isTakeOverModelPaginate()
public com.litongjava.model.page.Page takeOverModelPaginate(Connection conn, Class<? extends Model> modelClass, int pageNumber, int pageSize, Boolean isGroupBySql, String totalRowSql, StringBuilder findSql, Object... paras) throws Exception
Exceptionpublic void fillStatement(PreparedStatement pst, List<Object> paras) throws SQLException
SQLExceptionpublic void fillStatement(PreparedStatement pst, Object... paras) throws SQLException
SQLExceptionpublic String getDefaultPrimaryKey()
public void fillPst(PreparedStatement pst, int i, Object value) throws SQLException
SQLExceptionpublic String forPaginateTotalRow(String select, String sqlExceptSelect, Object ext)
select - sql 语句的 select 部分sqlExceptSelect - sql 语句除了 select 以外的部分ext - 扩展参数,在 Model 调用时传入 Model 对象,在 DbPro 调用时传入 nullpublic void trimPrimaryKeys(String[] pKeys)
Copyright © 2025. All rights reserved.