Spring集成
使用huiche-spring-boot-starter与spring进行集成
集成步骤
可以直接参考快速开始
配置项说明
在spring的配置参数大部分与huiche的配置一一对应,可以参考配置说明
| 配置参数 | 默认值 | 说明 |
|---|---|---|
| huiche.enum-by | EnumBy.NAME | 枚举取值方式 |
| huiche.null-to-empty | true | 集合类型为null时是否返回空集合 |
| huiche.use-national | 取决于方言 | 是否使用国家字符集,影响jdbc读写使用getNString还是getString等,一般建议不指定,默认会读取数据库方言,但是目前内置支持的方言均为false |
| huiche.batch-size | 500 | 批量插入时每次执行条数 |
| huiche.enable-serialization-mapper | true | 是否启用序列化转换器,需要同时存在jackson-databind(v3)才会生效 |
| huiche.block-unconditional-delete | true | 是否阻止无条件删除,特殊情况可通过传入Condition.TRUE跳过 |
| huiche.block-unconditional-update | true | 是否阻止无条件更新,特殊情况可通过传入Condition.TRUE跳过 |
| huiche.result-initial-capacity | 20 | 设置集合查询结果(List /Set等)初始容量,建议对齐业务最小每页数量,可避免扩容,默认20 |
| huiche.result-initial-capacity-max | 2000 | 集合查询结果(List/Set等)初始容量最大值,建议对齐业务最大每页数量,可避免扩容,默认2000 |
| huiche.slow-sql-threshold | 无 | 慢sql阈值(毫秒),执行耗时>=此阈值,则输出log(WARN),logger=SlowSQLListener |
| huiche.enable-sql-log | false | 是否开启sql日志(sql=DEBUG,params=TRACE),logger=SQLLogListener |
| huiche.plain-sql-log | false | 是否输出明文Sql日志(需开启日志enableSqlLog),开启后不再记录params日志,仅进行占位替换,不保证可执行 |
| spring.jdbc.template.fetch-size | -1 | spring-jdbc配置项,会读取作为huiche配置项 |
| spring.jdbc.template.max-rows | -1 | spring-jdbc配置项,会读取作为huiche配置项 |
| spring.jdbc.template.query-timeout | -1 | spring-jdbc配置项,会读取作为huiche配置项 |
slow-sql-threshold,enable-sql-log,plain-sql-log为spring集成的专属配置,根据配置值决定是否增加相关监听器, 关于监听器,可以详细了解添加监听器
声明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
JdbcExecutorhuiche底层jdbc执行器,所有的基础DaoDAO对象,需要依赖JdbcExecutorEntityDao, 实体类DAO,需要依赖Dao且需要动态设置Dao, huiche默认是使用EntityDaoBeanPostProcessor进行处理的,你需要自行实现一个类似的,或者是通过其他方式完成EntityDao的setDao