public abstract class AbstractSqlDataAccessor extends AbstractDataAccessor
| 限定符和类型 | 字段和说明 |
|---|---|
protected boolean |
autoAlterColumnLength
服务器数据是否智能修正文本字段的长度,默认:true
|
protected boolean |
autoAlterEmojiColumn
服务器数据是否智能转化EMOJI的字段,默认:true
|
protected javax.sql.DataSource |
dataSource |
protected SqlExpert |
expert |
protected int |
slowQuerySqlMillis
慢查询时间阀值(单位:毫秒),如果为0则不监控
|
protected boolean |
statementExecutableSqlLogEnable
是否输出执行SQL日志
|
protected boolean |
statementParameterSetLogEnable
是否输出执行SQL的参数日志(上一个必需要true)
|
| 构造器和说明 |
|---|
AbstractSqlDataAccessor(SqlExpert expert,
javax.sql.DataSource dataSource) |
| 限定符和类型 | 方法和说明 |
|---|---|
protected <T> void |
autoAlterTableUpdateColumn(EntityMapping<T> em,
FieldMapping fm)
自动修正字段
|
<T> void |
checkupEntityFieldsWithDatabase(EntityMapping<T> em)
检查一下表结构是不是跟这个实体一样一样的.
|
protected <T> T |
execute(EntityMapping<?> em,
PreparedStatementCallback<T> action,
java.lang.String sql,
boolean flag)
执行SQL的逻辑,只能是异常显示数据.
|
protected <T> T |
executeBatch(EntityMapping<?> em,
PreparedStatementCallback<T> action,
java.lang.String sql,
boolean flag) |
protected <T> T |
executeStatement(StatementCallback<T> action) |
protected boolean |
exists(java.lang.String tableName)
判定一个表是否存在.
|
protected abstract void |
handleDataTooLongException(EntityMapping<?> em,
java.util.Map<java.lang.String,java.lang.Integer> columnMaxLenMap)
处理数据过长的异常情况
|
void |
judgeAccessType()
猜测一下用的DB信息
|
void |
setAutoAlterTableDropColumn(boolean autoAlterTableDropColumn) |
void |
setSlowQuerySqlMillis(int slowQuerySqlMillis) |
void |
setStatementExecutableSqlLogEnable(boolean statementExecutableSqlLogEnable) |
void |
setStatementParameterSetLogEnable(boolean statementParameterSetLogEnable) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitbatchDelete, batchInsert, batchUpdate, delete, insert, load, loadAll, loadAll, updateprotected final SqlExpert expert
protected final javax.sql.DataSource dataSource
@Value(value="data.sql.log.enable") protected boolean statementExecutableSqlLogEnable
@Value(value="data.sql.log.parameter.enable") protected boolean statementParameterSetLogEnable
@Value(value="data.slow.query.sql.millis") protected int slowQuerySqlMillis
@Value(value="data.auto.alter.column.length") protected boolean autoAlterColumnLength
@Value(value="data.auto.alter.emoji.column") protected boolean autoAlterEmojiColumn
public AbstractSqlDataAccessor(SqlExpert expert, javax.sql.DataSource dataSource)
public void judgeAccessType()
DataAccessorpublic void setStatementExecutableSqlLogEnable(boolean statementExecutableSqlLogEnable)
public void setStatementParameterSetLogEnable(boolean statementParameterSetLogEnable)
public void setSlowQuerySqlMillis(int slowQuerySqlMillis)
public void setAutoAlterTableDropColumn(boolean autoAlterTableDropColumn)
protected <T> T executeStatement(StatementCallback<T> action)
protected <T> T execute(EntityMapping<?> em, PreparedStatementCallback<T> action, java.lang.String sql, boolean flag)
T - 数据类型em - 实体对象描述action - PreparedStatement回调接口sql - 执行SQLflag - 如果遇到数据长度异常情况,是否自动扩容protected <T> T executeBatch(EntityMapping<?> em, PreparedStatementCallback<T> action, java.lang.String sql, boolean flag)
protected abstract void handleDataTooLongException(EntityMapping<?> em, java.util.Map<java.lang.String,java.lang.Integer> columnMaxLenMap)
em - 实体对象描述columnMaxLenMap - 每个字段目前已用的最大长记录protected boolean exists(java.lang.String tableName)
tableName - 表名public <T> void checkupEntityFieldsWithDatabase(EntityMapping<T> em)
checkupEntityFieldsWithDatabase 在接口中 DataAccessorcheckupEntityFieldsWithDatabase 在类中 AbstractDataAccessorT - 实体对象类型em - 对象实体描述类.protected <T> void autoAlterTableUpdateColumn(EntityMapping<T> em, FieldMapping fm)
T - 实体类型em - 实体描述对象fm - 实体指定属性描述对象