4.4 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 执行时间是主要瓶颈,框架开销可忽略。
Q: v7 和 v6 有什么区别?
参见 6.2-v6升级到v7。
Q: Solon 下怎么用?
参见 1.2-安装配置-Solon 和 4.2-Solon完整集成。
Q: 能和 MyBatis 共存吗?
可以。DLZ-DB 不依赖 MyBatis 体系,两者走各自的数据源和连接即可。