sql-map.xml 是 iBatis 2.x 的核心 SQL 映射配置文件,以 为根节点并设 namespace;含 等 statement 标签,用 #xxx# 防注入、$xxx$ 拼接;支持 等动态标签及 显式映射。
sql-map.xml 是 iBatis(MyBatis 早期版本,即 2.x 系列)中用于定义 SQL 映射的核心配置文件。它把 Java 对象和数据库操作解耦,通过 XML 声明 SQL、参数映射、结果映射等。
下面直接说明怎么写一个可用的 sql-map.xml,重点讲清结构、常用标签和注意事项:
文件必须以
tatement)每个 SQL 封装在一个 、
sqlMap.queryForObject("UserDao.getUserById", param) 调用java.lang.Long、com.example.model.User),可省略但建议写明resultClass(如 java.lang.String),复杂对象建议用 resultMap
iBatis 使用 #xxx# 做预编译参数占位(防 SQL 注入),$xxx$ 做字符串拼接(慎用,易被注入):
#id# → 预编译参数,自动加引号(数值类型不加)#user.name# → 从参数对象取属性(支持嵌套,如 user.profile.age)$tableName$ → 直接替换,适用于表名、排序字段等无法参数化的场景动态 SQL 用 ):
当列名与 Java 属性名不一致,或需处理一对一、一对多关联时,用
id:resultMap 的唯一标识(配合 namespace 使用)class:对应的目标 Java 类:建立属性与字段映射(延迟加载)基本上就这些。注意:iBatis 2.x 已停止维护,新项目请直接用 MyBatis 3+(使用 Mapper.xml + 注解方式,语法更简洁、功能更强)。但维护老系统时,按上述规则写 sql-map.xml 是稳妥可行的。