| 維度 | iBatis 2.x | MyBatis 3.x |
|---|---|---|
| DAO 實現方式 | 繼承 SqlMapClientDaoSupport,調用 getSqlMapClientTemplate().queryForObject(...) | 定義 Mapper 接口,XML 直接映射方法,無需實現類 (動態代理) |
| 配置文件根元素 | <sqlMap> | <mapper namespace="..."> |
| DTD 約束 | ibatis-2-mapping.dtd | mybatis-3-mapping.dtd |
| iBatis 屬性 | MyBatis 屬性 | 說明 |
|---|---|---|
| parameterClass | parameterType | 輸入參數類型 (全限定名/別名) |
| resultClass | resultType | 單條結果類型 |
| resultMap (class 屬性) | resultMap (type 屬性) | 結果映射引用/定義 |
| parameterMap (class 屬性) | parameterMap (type 屬性) | 參數映射 (已棄用,推薦 parameterType) |
#value# → #{value} (OGNL 表達式支持屬性導航 #{user.id}、集合遍歷 #{item.name})。<isEqual>/<isNotNull> → <if test="..."> (統一 OGNL 語法)。<iterate> → <foreach collection="..." item="..." separator=",">。<dynamic> → <set>/<trim> (更精準控制逗號/AND/OR)。| iBatis jdbcType | MyBatis jdbcType |
|---|---|
| ORACLECURSOR | CURSOR |
| NUMBER | NUMERIC |
| 其它標準類型 | 保持不變 (VARCHAR, INTEGER, TIMESTAMP...) |
<result columnIndex="..."> (按索引映射),統一使用 column="列名" 或 property="屬性名"。<id> 標識主鍵屬性,<result> 普通屬性,<association>/<collection> 關聯對象/集合。sqlMapConfig.xml 重寫為 mybatis-config.xml,註冊 <mapper resource="..."/> 或 <package name="..."/>。@Select("SELECT * FROM t WHERE id=#{id}") 簡單查詢無需 XML。