public abstract class Dialect extends Object
| 限定符和类型 | 类和说明 |
|---|---|
protected static class |
Dialect.Holder |
| 限定符和类型 | 字段和说明 |
|---|---|
protected boolean |
keepByteAndShort |
protected ModelBuilder |
modelBuilder |
protected RecordBuilder |
recordBuilder |
| 构造器和说明 |
|---|
Dialect() |
| 限定符和类型 | 方法和说明 |
|---|---|
<T> List<T> |
buildModelList(ResultSet rs,
Class<? extends Model> modelClass) |
List<Record> |
buildRecordList(Config config,
ResultSet rs) |
List<Record> |
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<Record,Boolean> func) |
void |
fillStatement(PreparedStatement pst,
List<Object> paras) |
void |
fillStatement(PreparedStatement pst,
Object... paras) |
protected void |
fillStatementHandleDateType(PreparedStatement pst,
List<Object> paras)
fillStatement 时处理日期类型
|
protected void |
fillStatementHandleDateType(PreparedStatement pst,
Object... paras)
fillStatement 时处理日期类型
|
abstract void |
forDbDelete(String tableName,
String[] pKeys,
Record record,
StringBuilder sql,
List<Object> paras) |
abstract String |
forDbDeleteById(String tableName,
String[] pKeys) |
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,
Record record,
StringBuilder sql,
List<Object> paras) |
abstract void |
forDbSave(String tableName,
String[] pKeys,
Record record,
StringBuilder sql,
List<Object> paras,
String[] jsonFields) |
abstract void |
forDbUpdate(String tableName,
String[] pKeys,
Object[] ids,
Record record,
StringBuilder sql,
List<Object> paras) |
abstract void |
forDbUpdate(String tableName,
String[] pKeys,
Object[] ids,
Record 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,
Record 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() 时的类型转换异常
|
String |
replaceOrderBy(String sql) |
Dialect |
setKeepByteAndShort(boolean keepByteAndShort)
指示 Generator、ModelBuilder、RecordBuilder 是否保持住 Byte、Short 类型
|
Dialect |
setModelBuilder(ModelBuilder modelBuilder)
配置自定义 ModelBuilder
通过继承扩展 ModelBuilder 可以对 JDBC 到 java 数据类型进行定制化转换
不同数据库从 JDBC 到 java 数据类型的映射关系有所不同
此外,还可以通过改变 ModelBuilder.buildLabelNamesAndTypes()
方法逻辑,实现下划线字段名转驼峰变量名的功能
|
Dialect |
setRecordBuilder(RecordBuilder recordBuilder)
配置自定义 RecordBuilder
通过继承扩展 RecordBuilder 可以对 JDBC 到 java 数据类型进行定制化转换
不同数据库从 JDBC 到 java 数据类型的映射关系有所不同
此外,还可以通过改变 RecordBuilder.buildLabelNamesAndTypes()
方法逻辑,实现下划线字段名转驼峰变量名的功能
|
<T> Page<T> |
takeOverDbPaginate(Connection conn,
int pageNumber,
int pageSize,
Boolean isGroupBySql,
String totalRowSql,
StringBuilder findSql,
Object... paras) |
Page |
takeOverModelPaginate(Connection conn,
Class<? extends Model> modelClass,
int pageNumber,
int pageSize,
Boolean isGroupBySql,
String totalRowSql,
StringBuilder findSql,
Object... paras) |
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 void forDbSave(String tableName, String[] pKeys, Record record, StringBuilder sql, List<Object> paras, String[] jsonFields)
public abstract void forDbSave(String tableName, String[] pKeys, Record record, StringBuilder sql, List<Object> paras)
public abstract void forDbDelete(String tableName, String[] pKeys, Record record, StringBuilder sql, List<Object> paras)
public abstract void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Record record, StringBuilder sql, List<Object> paras)
public abstract void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Record record, StringBuilder sql, List<Object> paras, 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<Record> buildRecordList(Config config, ResultSet rs) throws SQLException
SQLExceptionpublic List<Record> buildRecordListWithJsonFields(Config config, ResultSet rs, String[] jsonFields) throws SQLException
SQLExceptionpublic void eachRecord(Config config, ResultSet rs, java.util.function.Function<Record,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, Record record, String[] pKeys) throws SQLException
SQLExceptionpublic boolean isOracle()
public boolean isTakeOverDbPaginate()
public <T> Page<T> takeOverDbPaginate(Connection conn, int pageNumber, int pageSize, Boolean isGroupBySql, String totalRowSql, StringBuilder findSql, Object... paras) throws SQLException
SQLExceptionpublic boolean isTakeOverModelPaginate()
public 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()
protected void fillStatementHandleDateType(PreparedStatement pst, List<Object> paras) throws SQLException
SQLExceptionprotected void fillStatementHandleDateType(PreparedStatement pst, Object... paras) 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 © 2024. All rights reserved.