与<select>标签有关的还有一个重要的标签就是结果集映射标签<resultMap>
这里先假设有个POJO类叫User,有一张表t_user
ClassUser{ privateLongid; privateStringname; privateIntegerage; //get set}
CREATETABLE `t_user` ( `id` int(11)NOTNULL AUTO_INCREMENT, `name` varchar(30)NULL DEFAULT NULL, `age` int(11)NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE )
<selectid="getList"parameterType="package.User"resultType="package.User"> SELECT t.ID,t.name,t.age FROM t_user t </select>
上面的<select>标签返回值是以resultType指定的具体po类,其实大多数是数据库中的表字段跟我们po里的属性是不一致的,这个时候需要做一一映射,这也是Mybatis框架的核心精髓概念。下面我们用<resultMap>标签替换一下写法
<resultMapid="UserMap"type="package.User"><idcolumn="id"property="id"jdbcType="INTEGER"/><resultcolumn="name"property="name"/><resultcolumn="age "property="age "/></resultMap><selectid="getList"parameterType="package.User"resultMap="UserMap"> SELECT t.ID,t.name,t.age FROM t_user t </select>
上面的写法不光可以解决单表的属性列有po中字段属性值不一致的问题,还可以解决多表关联属性列相同的情况下,以不一样的别名对应到po中字段属性上去的情况。可以说作用很大,下面就官方解释来学习一下这个标签。
<resultMap> 标签是 MyBatis 中用于定义结果集与 Java 对象之间映射规则的标签。通过使用 <resultMap> 标签,你可以明确指定数据库查询结果中的列与 Java 对象属性之间的对应关系,从而将数据库查询结果自动映射到 Java 对象中。
通常情况下,MyBatis 可以通过列名和属性名的命名规则自动进行简单的映射,但是在一些特殊情况下,数据库列名和 Java 对象属性名可能不一致,或者需要进行类型转换。这时候就需要使用 <resultMap> 标签来指定映射规则。