mybatis-mapper.xml傳參_動態sql


一、mapper.xml傳參

  1、根據getter和setter;

  2、根據Map的key;

  3、@Param("")注解;

 

二、動態sql

<if test="value!=null and value!=''">
    判斷成功,sql語句存在;
    判斷失敗,sql語句不存在;
</if>
<choose>
    <when test="value!=null and value!=''">
        判斷成功,執行該句
    </when>
    <otherwise>
        否則,執行該句
    </otherwise>
</choose>
<where>
    <if test="value!=null and value!=''">
        and/or要加上,開頭的and/or會自動取消
    </if>
</where>
<set>
    <if test="value!=null">
        ,要加上,最后的,會自動取消
    </if>
</set>
<trim prefix="where" prefixOverrides="and | or" suffix=")" suffixOverrides=",">
    語句前加where,開頭是and或or會取消,最后加),最后是,會自動取消
</trim>
<foreach collection="list" item="item" open="(" close=")" separator=",">
    #{item},一般用於in語句或添加多行數據
</foreach>
<sql id="field">
    id,name,age
</sql>
<select id="daoMethod">
    SELECT <include refid="field"></include>
    FROM tableName
</select>
#{}和${}區別:${}是做字符串拼接,#{}是?占位,#{}比${}安全

 

三、級聯一對多

<resultMap type="com.zhihuibao580.beans.Clargeclass" id="largeClass">
    <id column="lid" property="id"/>
    <result column="lname" property="name"></result>
    <collection property="objSubclass" ofType="com.zhihuibao580.beans.Subclass">
        <id column="sid" property="id"/>
        <result column="sname" property="name"></result>
        <result column="slargeClass" property="largeClass"></result>
        <result column="sicon" property="icon"></result>
    </collection>
</resultMap>
<select id="selectCommodityClass" resultMap="largeClass">
    select l.id lid,l.name lname,
    s.id sid,s.name sname,s.largeClass slargeClass,s.icon sicon 
    from c_largeclass l,subclass s 
    where l.id=s.largeClass
</select>

 

四、級聯一對一

<resultMap type="com.zhihuibao580.beans.Subclass" id="mySubclass">
    <id column="sid" property="id"/>
    <result column="sname" property="name"/>
    <result column="slargeClass" property="largeClass"/>
    <result column="sicon" property="icon"/>
    <association property="clargeclass" javaType="com.zhihuibao580.beans.Clargeclass">
        <id column="lid" property="id"/>
        <result column="lname" property="name"/>
    </association>
</resultMap>
<select id="adminSelectSubclass" resultMap="mySubclass">
    select s.id sid,s.name sname,s.largeClass slargeClass,s.icon sicon,
    l.id lid,l.name lname
    from c_largeclass l,subclass s
    where s.largeClass=l.id
</select>

 

五、遞歸查詢

<select id="findByArticleId" resultMap="commentResultMap">
    SELECT * FROM dcy_comment WHERE parent_id = -1
    AND article_id = #{articleId}
    ORDER BY create_date DESC
</select>
<select id="findByParentId" resultMap="commentResultMap">
    SELECT * FROM dcy_comment WHERE parent_id = #{id}
</select>
<resultMap id="commentResultMap" type="com.dingcaiyan.blog.entities.Comment">
    <id column="id" property="id"/>
    <result column="parent_id" property="parentId"/>
    <result column="user_id" property="userId"/>
    <result column="nick_name" property="nickName"/>
    <result column="user_image" property="userImage"/>
    <result column="article_id" property="articleId"/>
    <result column="content" property="content"/>
    <result column="create_date" property="createDate"/>
    <collection property="children" javaType="list" ofType="com.dingcaiyan.blog.entities.Comment" column="id"
                select="findByParentId"/>
</resultMap>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM