14 - 附录
14.1 FAQ 常见问题
Q: 如何处理复杂的 JOIN 查询?
使用原生 SQL 或预设 SQL:
String sql = """
SELECT u.*, d.name as dept_name
FROM user u
LEFT JOIN department d ON u.dept_id = d.id
WHERE u.status = ?
""";
List<ResultMap> list = DB.Jdbc.select(sql, 1).queryList();
Q: 如何实现乐观锁?
// 更新时带上版本号
int updated = DB.Pojo.update(User.class)
.set(User::getName, newName)
.set(User::getVersion, user.getVersion() + 1)
.eq(User::getId, user.getId())
.eq(User::getVersion, user.getVersion()) // 版本号条件
.execute();
if (updated == 0) {
throw new OptimisticLockException("数据已被修改");
}
Q: 如何调试 SQL?
DLZ-DB 日志会显示:
- 完整可执行的 SQL(参数已填充)
- 执行耗时
- 调用代码位置
直接复制 SQL 到数据库工具执行即可调试。
Q: 性能和 MyBatis 比怎么样?
DLZ-DB 底层基于 JDBC,无 XML 解析开销,理论上更快。 实际使用中,SQL 执行时间是主要瓶颈,框架开销可忽略。
14.2 更新日志
更新日志
v1.2.0 (2024-xx-xx)
新增
- 支持 PostgreSQL 方言
- 新增
insertOrUpdate方法 - ResultMap 支持负数索引
优化
- SQL 日志格式优化
- 批量插入性能提升 50%
修复
- 修复多数据源事务问题
- 修复 LIKE 特殊字符转义
v1.1.0 (2024-xx-xx)
新增
- 支持预设 SQL 嵌套
- 新增慢 SQL 监控
- 支持 Oracle 分页
优化
- Lambda 解析性能优化
v1.0.0 (2024-xx-xx)
- 🎉 首个正式版本发布
文档总结
完整文档结构:
├── 第1章:快速开始(3节)
├── 第2章:核心概念(3节)
├── 第3章:基础操作(4节)
├── 第4章:条件构造器(5节)
├── 第5章:分页排序(2节)
├── 第6章:结果映射(3节)
├── 第7章:Lambda表达式(1节)
├── 第8章:预设SQL(3节)
├── 第9章:多数据源(2节)
├── 第10章:日志调试(2节)
├── 第11章:高级特性(3节)
├── 第12章:最佳实践(3节)
├── 第13章:API参考(4节)
└── 第14章:附录(2节)
共计:14章,40节