Skip to content

配置说明

org.huiche.core.configuration.Configuration 是huiche的配置项,仅允许由org.huiche.core.configuration.ConfigurationBuilder创建

参数说明

connectionProvider

连接提供者,内置了三种实现,使用spring-boot集成时,额外提供了SpringJdbcConnectionProvider并使用

  • SingleConnectionProvider 单连接提供者,直接提供一个Connection,始终复用,建议测试场景
  • JdbcConnectionProvider 根据jdbc-url和属性来获取Connection,建议测试场景
  • DataSourceConnectionProvider 连接池管理的连接提供者
  • SpringJdbcConnectionProvider 集成了spring事务和数据源的连接提供者

dialect

数据库方言,默认由connectionProvider获取DatabaseMetadata进行推导,除非使用内置不支持的方言,否则不建议设置

jdbc

jdbc原生配置属性,包含fetchSize,maxRows,queryTimeout,设置每次传输的大小,最大获取行数,查询超时时间

使用spring-boot-starter时,自动读取spring.jdbc.template下对应的配置项

sqlExceptionTranslator

SQL异常翻译器,可以将JDBC原生的SQLException翻译为其他RuntimeException

使用spring-boot-starter时,默认包装SQLErrorCodeSQLExceptionTranslator使用,将SQLException翻译为DataAccessException

listener

可以添加SQL监听器,监听huiche-jdbc对sql的执行,可以做一些日志记录,记录sql执行耗时等操作

使用spring-boot-starter时,提供slowSqlThreshold可以配置自动添加慢SQL监听,提供enableSqlLog可以启用SQL日志,提供plainSqlLog可以在启用日志时,输出明文SQL

serializationMapper

可选, 序列化转换器,用于处理复杂的列类型的转换,比如可以存储JSON或者是简单的列表数据List<String>,底层使用getString读写数据,然后进行序列化或反序列化转换,数据库层只要兼容即可,可以是JSON,CLOB,VARCHAR等类型

使用spring-boot-starter时,默认使用jackson当作序列化转换器, 如果实际classpath不存在jackson则会忽略,可自行配置添加使用其他序列化

columnMappers

可选, 可自定义列类型映射,自行实现org.huiche.core.mapper.ColumnMapper<T>即可

使用spring-boot-starter时,如果自行实现的类型映射注册为bean(@Component等或使用@Configuration注册),会自动添加到配置中

generators

值生成器,可添加值生成器,自行实现org.huiche.core.support.Generator即可,然后配合@FillOnInsert@FillOnUpdate 即可在插入或更新时(必须调用dao的插入/更新的方法) 自动进行填充值

使用spring-boot-starter时,如果自行实现的值生成器注册为bean(@Component等或使用@Configuration注册),会自动添加到配置中

了解数据填充

enableFill

是否启用填充,该属性是作为标记,无法直接更改, 如果添加了generators 则会自动启用,否则不启用

enumBy

枚举类取值方式,提供三种选择

  • NAME(默认),使用Enum#name(),推荐
  • ORDINAL,使用Enum#ordinal() 非常不推荐,如果调整了枚举定义,数据就可能错乱了
  • VALUE, 枚举类必须实现java.util.function.IntSupplier,取值时调用其getAsInt方法

nullToEmpty

当列类型为集合/Map/数组时,且值为null时,是否转换为空集合/空Map/空数组,默认为true

useNational

影响使用读写数据时使用getString还是getNString, 一般不用设置,会读取方言的该选项,且目前支持的方言均为false,即便是某些数据库使用类似NVARCHAR类型,一般也建议使用getString读写,只有特殊情况需要设置

batchSize

批量大小,影响dao.insertBatch()系列方法中, 默认每条语句插入的数量,默认为500,即如果批量插入1000条数据,会实际分为2次,每次插入500条,可以根据情况调整

blockUnconditionalDelete

阻止无条件删除,默认为true,通过dao的delete()系列方法删除数据时,是否拦截无条件删除

可以通过传一个Condition.TRUE的条件,来跳过该限制(实际执行时不会附加到SQL)

blockUnconditionalUpdate

阻止无条件更新,默认为true,通过dao的update()系列方法更新数据时,是否拦截无条件更新

可以通过传一个Condition.TRUE的条件,来跳过该限制(实际执行时不会附加到SQL)

resultInitialCapacity

当查询结果为集合类型时,默认的初始化的集合大小,默认为20

说明

  • 数值太小而实际查询结果较多时,会造成多次扩容,略微影响性能
  • 数值过大而实际查询结果较少时,会造成内存浪费,1000大小的ArrayList大概会占用4KB,如果还存在并发,则可能会影响内存
  • 建议大小与业务平台,默认分页大小每页数量对齐,如果没有极致的性能要求,可忽略

resultInitialCapacityMax

当查询结果为集合类型时,最大的初始化的集合大小,默认为2000

此属性为resultInitialCapacity的补充, 即超过resultInitialCapacityMax时 回退到默认自动扩容模式