深入学习 ODB(四):ODB Query Language——类型安全的查询之道
系列导航:编译器与注解 | 连接与事务 | 对象关系 | 类型安全查询(本文) | 继承与视图 | 迁移与多库 | 性能与实践 | 实战项目 引言:手写 SQL 查询的隐患 游戏服务器中,查询无处不在——排行榜、道具筛选、好友搜索、日志审计。手写 SQL 最大的风险是编译器看不见的错误: 1 2 3 4 5 6 7 8 9 10 11 12 // ❌ 手写 SQL:字段名拼错,编译不报错,运行时才崩 auto result = mysql_query(conn, "SELECT * FROM player WHERE levle > 50 ORDER BY levle DESC"); // ^^^^ ^^^^ // 拼成了 levle,MySQL 直接报错 // 但编译器对此一无所知 // ❌ 类型错误:用字符串比较数字 auto result = mysql_query(conn, "SELECT * FROM player WHERE level > '50'"); // ^^^^ // 隐式类型转换,可能有意外行为 ODB 的查询系统从根本上解决了这个问题——字段名是 C++ 符号,类型是编译期检查的。拼错字段名?编译不通过。类型不匹配?编译不通过。 ...