1. 前言
本小节,我们将一起学习 MyBatis resultMap 和 sql。
在前面的小节中,我们了解到 MyBatis 可以自动帮助我们映射数据库数据和 Java 对象,其实这是 MyBatis 在幕后帮我们创建了 resultMap 对象;虽然 MyBatis 可以自动帮助我们做数据映射,但是对于复杂的对象,我们就必须自定义 resultMap 了。
而在书写 SQL 时,势必会有一些 SQL 代码段出现了重复,为了更好的复用它们,MyBatis 提供了 sql 标签。
2. 定义
解释:resultMap 标签用于将数据库数据
映射
为 Java 对象;sql 标签则用来定义可重用
的 SQL 代码段。
3. 实例
4.1 resultMap 实例
4.1.1 xml 实例
在下面这段 select 标签中,SQL 语句返回的是一个复杂对象,即 resultType 上指定的 User。
<select id="selectUserByAgeAndScore" parameterType="com.5axxw.mybatis.model.User"
resultType="com.5axxw.mybatis.model.User">
SELECT * FROM 5axxw_user WHERE age = #{age} AND score = #{score}
</select>
在这种情况下,MyBatis 会自动创建 resultMap 对象进行数据的映射,接下来我们直接定义出 resultMap,避免 MyBatis 推断和映射带来的性能损耗。如下:
<resultMap id="userMap" type="com.5axxw.myb