一、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>