性能、安全与部署

性能优化

惰性查询

如果对查询结果需要进行二次处理转换等操作,推荐返回类型为 Stream,减少循环的次数,提升性能。

批量操作

对于批量插入、更新等操作,推荐使用批量提交,减少数据库的网络交互次数,提升性能。

baki.execute("&guest.insert", rows);

预编译批处理可向 baki.execute(sql, rows) 传入 Iterable;table(...).enableBatch() 的插入、更新也使用 JDBC 批处理。输入仅遍历一次,参数映射函数每行调用一次,单表批量插入、更新接受空输入。

每行动态 SQL 和参数都会重新解析,包括 #for 生成的参数。所有行最终生成的预编译 SQL 必须相同;如果 #if 改变列集合、#for 改变占位符数量等导致 SQL 结构变化,会明确报错。应先按 SQL 结构分组,或逐条执行。

batchSize 必须大于 0,只控制每次 JDBC 执行的条数。前面的分批可能已经执行,后面的错误本身不会撤销它们;要求整批原子性时,请使用 事务。

缓存重复查询

针对频繁执行的相同查询,推荐使用应用层缓存或数据库查询缓存,减少重复 SQL 请求,提升系统响应速度。

实现接口:com.github.chengyuxing.sql.plugins.QueryCacheManager 来实现自定义的缓存层,并注册到 BakiDao#setQueryCacheManager 来启用缓存。

SQL 优化

错误处理与调试

错误日志

常见错误处理

安全性最佳实践

防止 SQL 注入

数据库连接池配置

版本控制与部署

结语

rabbit-sql 是一个强大而灵活的持久层框架,通过遵循以上最佳实践,可以确保您的项目具有高效、可维护、性能优越的数据库交互逻辑。随时保持对最新功能和优化的关注,并根据项目需求灵活应用这些实践。