MyBatis对一(collection)和对多(association)

    • trim
    • 一对多关联
    • 一对一关联
    • 多对多

trim

trim标记是一个格式化的标记,可以完成set或者是where标记的功能

代码名称 作用
prefix=”“ 代替功能
prefixOverrides=”“ 去除前方或后方多出
prefix=”“ 末尾添加
@使用范例
<trim prefix="where" prefixOverrides="and | or">
<if test="userName != null and userName != ''">
and userName like CONCAT ('%',#{userName},'%') 
if>
<if test="userRole != null">
and userRole = #{userRole}
if>


<trim prefix="set" suffix="where id = #{id}" suffixOverrides=",">
<if test="userName != null">userName=#{userName},if>
trim>

一对多关联

type="本类别名" id="父类方法名">

中间是本类基本属性

<id property="id" column="r.id">id>
<result property="userCode" column="userCode"/>
<result property="userNmae" column="userNmae"/>

type="本类别名" id="子类方法名" extends="父类resultMap的id名">

本类里的声明的属性名books本类里声明的属性类型BOOK对方命名空间.resultMap的id名

<collection property="addresses" ofType="Address" resultMap="com.bdqn.dao.getAddress">collection>
resultMap>

查的时候就用子类id名

一对一关联

type="本类别名" id="方法名">

中间是本类属性

<id property="id" column="r.id">id>
<result property="userCode" column="userCode"/>
<result property="userNmae" column="userNmae"/>
<result property="userRole" column="userRole"/>

本类里声明的属性名books 本类里声明的属性类型BOOK

<association property="role" javaType="role">

对方属性名

<id property="id" column="rl_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>


多对多

多对多的使用与一对多的区别在于数据库中,存在着关联两表的第三表,在sql语句中表现,其余地方与上文无异

你可能感兴趣的:(学习笔记)