跳到主要内容

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 日志会显示:

  1. 完整可执行的 SQL(参数已填充)
  2. 执行耗时
  3. 调用代码位置

直接复制 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节