跳到主要内容

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-安装配置-Solon4.2-Solon完整集成

Q: 能和 MyBatis 共存吗?

可以。DLZ-DB 不依赖 MyBatis 体系,两者走各自的数据源和连接即可。