MyBatis之ResultMap的association和collection标签详解( 二 )

五、association标签常用参数详解属性描述property映射到列结果的字段或属性 。如果用来匹配的 JavaBean 存在给定名字的属性,那么它将会被使用 。否则 MyBatis 将会寻找给定名称的字段 。无论是哪一种情形,你都可以使用通常的点式分隔形式进行复杂属性导航 。人话为:你要一对一的实体类中的另一个实体类的名称javaType一个 Java 类的完全限定名,或一个类型别名 。如果你映射到一个 JavaBean,MyBatis 通常可以推断类型 。然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致 。例子演示

  • 实体类演示
@Data//书籍public class Book {    private String id;    private String name;    private String author;    private Double price;    private Integer del;    private Date publishdate;    private String info;    //把出版社对象当作属性    private Publisher pub;//------重点在这里一本书对应一个出版社,这是一个出版社对象}@Data//出版社public class Publisher {    private String id;    private String name;    private String phone;    private String address;}- xml演示
<resultMap id="rMap_book" type="com.wang.test.demo.entity.Book"> <!-- 主键  property为实体类属性 column为数据库字段 jdbcType为实体类对应的jdbc类型-->    <id property="id" column="b_id" jdbcType="VARCHAR"></id>    <!-- 普通属性  property为实体类属性 column为数据库字段  jdbcType为实体类对应的jdbc类型-->    <result property="name" column="b_name" jdbcType="VARCHAR"></result>    <result property="author" column="author" jdbcType="VARCHAR"></result>    <result property="price" column="price" jdbcType="VARCHAR"></result>    <result property="del" column="del" jdbcType="NUMERIC"></result>    <result property="publisherid" column="publisher_id" jdbcType="VARCHAR"></result>    <result property="publishdate" column="publish_date" jdbcType="TIMESTAMP"></result>    <!--一对一映射association property 为实体类book中的属性名字 javaType为实体类属性的类型 -->    <association property="pub" javaType="com.wang.test.demo.entity.Publisher">        <id property="id" column="p_id" jdbcType="VARCHAR"></id>        <result property="name" column="name" jdbcType="VARCHAR"></result>        <result property="phone" column="phone" jdbcType="VARCHAR"></result>        <result property="address" column="address" jdbcType="VARCHAR"></result>    </association></resultMap>

经验总结扩展阅读