深入学习 ODB(一):编译期 ORM 的革命性思路
系列导航:编译器与注解(本文) | 连接与事务 | 对象关系 | 类型安全查询 | 继承与视图 | 迁移与多库 | 性能与实践 | 实战项目 引言:游戏服务器为什么需要 ORM? 假设你正在开发一款 MMO 游戏服务器,玩家下线时需要将角色数据存入 MySQL。最朴素的做法是: 1 2 3 4 5 6 7 8 9 10 11 12 13 // 传统方式:手动拼接 SQL void savePlayer(MYSQL* conn, const Player& p) { char sql[1024]; snprintf(sql, sizeof(sql), "REPLACE INTO player (id, name, level, exp, gold, created_at) " "VALUES (%lu, '%s', %d, %lu, %lu, '%s')", p.id, p.name.c_str(), p.level, p.exp, p.gold, p.createdAt.c_str()); mysql_query(conn, sql); // 没有类型检查、没有防注入、字段增减要同步改 SQL... } 这段代码有几个致命问题: ...