<resultMap id="" type=""> <constructor><!-- 类再实例化时用来注入结果到构造方法 --> <idArg/><!-- ID参数,结果为ID --> <arg/><!-- 注入到构造方法的一个普通结果 --> </constructor> <id/><!-- 用于表示哪个列是主键 --> <result/><!-- 注入到字段或JavaBean属性的普通结果 --> <association property=""/><!-- 用于一对一关联 --> <collection property=""/><!-- 用于一对多、多对多关联 --> <discriminator javaType=""><!-- 使用结果值来决定使用哪个结果映射 --> <case value=""/><!-- 基于某些值的结果映射 --> </discriminator> </resultMap>其中:
元素 | 说明 |
---|---|
property | 映射到列结果的字段或属性。如果 POJO 的属性和 SQL 列名(column元素)是相同的,那么 MyBatis 就会映射到 POJO 上 |
column | 对应 SQL 列 |
javaType | 配置 Java 类型。可以是特定的类完全限定名或 MyBatis 上下文的别名 |
jdbcType | 配置数据库类型。这是 JDBC 类型,MyBatis 已经为我们做了限定,基本支持所有常用数据库类型 |
typeHandler | 类型处理器。允许你用特定的处理器来覆盖 MyBatis 默认的处理器。需要指定 jdbcType 和 javaType 相互转化的规则 |
<!-- 查询所有网站信息存到Map中 --> <select id="selectAllWebsite" resultType="map"> select * from website </select>在 WebsiteMapper 接口中添加以下方法。
public List<Map<String,Object>> selectAllWebsite();Map 的 key 是 select 语句查询的字段名(必须完全一样),而 Map 的 value 是查询返回结果中字段对应的值,一条记录映射到一个 Map 对象中。
package net.biancheng.po; import java.util.Date; public class Website { private int id; private String uname; private String url; private int age; private String country; private Date createtime; /* setter和getter方法*/ @Override public String toString() { return "Website[id=" + id + ",uname=" + uname + ",url=" + url + ",age=" + age + ",country=" + country + ",createtime=" + createtime + "]"; } }WebsiteMapper.xml 代码如下。
<!--使用自定义结果集类型 --> <resultMap type="net.biancheng.po.Website" id="myResult"> <!-- property 是 net.biancheng.po.Website 类中的属性 --> <!-- column是查询结果的列名,可以来自不同的表 --> <id property="id" column="id" /> <result property="uname" column="name" /> </resultMap>resultMap 元素的属性 id 代表这个 resultMap 的标识,type 标识需要映射的 POJO。我们可以使用 MyBatis 定义好的类的别名或自定义类的全限定名。
<select id="selectAllWebsite" resultMap="myResult"> select id,name,url from website </select>可以发现 SQL 语句的列名和 myResult 中的 column 一一对应。
本文链接:http://task.lmcjl.com/news/18751.html