Skip to content

Spring集成

使用huiche-spring-boot-starterspring进行集成

集成步骤

可以直接参考快速开始

配置项说明

spring的配置参数大部分与huiche的配置一一对应,可以参考配置说明

配置参数默认值说明
huiche.enum-byEnumBy.NAME枚举取值方式
huiche.null-to-emptytrue集合类型为null时是否返回空集合
huiche.use-national取决于方言是否使用国家字符集,影响jdbc读写使用getNString还是getString等,一般建议不指定,默认会读取数据库方言,但是目前内置支持的方言均为false
huiche.batch-size500批量插入时每次执行条数
huiche.enable-serialization-mappertrue是否启用序列化转换器,需要同时存在jackson-databind(v3)才会生效
huiche.block-unconditional-deletetrue是否阻止无条件删除,特殊情况可通过传入Condition.TRUE跳过
huiche.block-unconditional-updatetrue是否阻止无条件更新,特殊情况可通过传入Condition.TRUE跳过
huiche.result-initial-capacity20设置集合查询结果(List /Set等)初始容量,建议对齐业务最小每页数量,可避免扩容,默认20
huiche.result-initial-capacity-max2000集合查询结果(List/Set等)初始容量最大值,建议对齐业务最大每页数量,可避免扩容,默认2000
huiche.slow-sql-threshold慢sql阈值(毫秒),执行耗时>=此阈值,则输出log(WARN),logger=SlowSQLListener
huiche.enable-sql-logfalse是否开启sql日志(sql=DEBUG,params=TRACE),logger=SQLLogListener
huiche.plain-sql-logfalse是否输出明文Sql日志(需开启日志enableSqlLog),开启后不再记录params日志,仅进行占位替换,不保证可执行
spring.jdbc.template.fetch-size-1spring-jdbc配置项,会读取作为huiche配置项
spring.jdbc.template.max-rows-1spring-jdbc配置项,会读取作为huiche配置项
spring.jdbc.template.query-timeout-1spring-jdbc配置项,会读取作为huiche配置项

slow-sql-threshold,enable-sql-log,plain-sql-logspring集成的专属配置,根据配置值决定是否增加相关监听器, 关于监听器,可以详细了解添加监听器

声明bean替代默认配置项

  • Dialect 数据库方言,可以声明并注册为bean,则自动替换默认方言,但除非使用内置不支持的方言,否则不建议手动指定
  • Listener 监听器,可以声明并注册为bean, 会自动添加为监听器,因为监听器可以有多个,默认并不会替代通过配置参数添加的慢SQL日志和SQL日志监听器,只能通过配置项配置取消
  • SerializationMapper 序列化转换器, huiche默认检测classpath是否存在jackson-bind(v3),如果存在会自动创建jackson的序列化转换器,如果自行声明并注册为bean,则默认的jackson转换器不再注册
  • ColumnMapper 列类型映射,可以声明并注册为bean,则会自动添加到配置,了解自定义列类型映射
  • Generator 值生成器,如果需要数据填充,可以声明并注册为bean,则会自动添加到配置,了解数据填充

配置自定义

huiche提供了ConfigurationCustomizer接口方便用户自行对配置项进行调整,只需要进行实现并注册为bean即可,通过ConfigurationCustomizer可以自由的控制各个配置项,如果上面提供的声明方式无法满足你的要求,可以通过此方式处理

自动配置说明

当前HuicheAutoConfiguration仅在beanFactory注册了单一DataSource bean时生效(使用了@ConditionalOnSingleCandidate(DataSource.class)), 如果你需要多数据源模式,你需要自动注册相关bean

  • JdbcExecutor huiche底层jdbc执行器,所有的基础
  • Dao DAO对象,需要依赖JdbcExecutor
  • EntityDao, 实体类DAO,需要依赖Dao 且需要动态设置Dao, huiche默认是使用EntityDaoBeanPostProcessor进行处理的,你需要自行实现一个类似的,或者是通过其他方式完成EntityDaosetDao