本文记录一些mybatis经常用到的操作。
目录
2、选择结构 (choose,when,otherwise)
3、循环<foreach></foreach>
4、批量操作<trim></trim>
4、处理特殊字符格式包含<![CDATA[...]]>
1、返回插入的id
加上两个标签 keyProperty="id" useGeneratedKeys="true"
2、选择结构 (choose,when,otherwise)
<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog">
select * from t_blog where 1 = 1
<choose>
<when test="title != null">
and title = #{title}
</when>
<when test="content != null">
and content = #{content}
</when>
<otherwise>
and owner = "owner1"
</otherwise>
</choose>
</select>
3、循环
<insert id="insertList">
INSERT INTO xgx_course_mapping (course_id, coure_mapping_id,sort) VALUES
<foreach collection="courseMappingIdList" index="index" item="item" separator=",">
(#{courseId},#{item.courseId},#{item.sort})
</foreach>
</insert>
4、批量操作<trim></trim>
批量操作:判断每一个参数,并指定前缀后缀,去重前面和后面多余的字段
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides="">
</trim>
#prefix:在trim标签内sql语句加上前缀。
#suffix:在trim标签内sql语句加上后缀。
#suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。
#prefixOverrides:指定去除多余的前缀内容
如:
INSERT INTO 表名
<trim prefix="(" suffix=")" suffixOverrides=",">
type,
<if test="title != null and title != ''">
title,
</if>
<if test="targetId != null and targetId != ''">
target_id,
</if>
</trim>
<trim prefix=" VALUES (" suffix=")" suffixOverrides=",">
#{type},
<if test="title != null and title != ''">
#{title},
</if>
<if test="targetId != null and targetId != ''">
#{targetId},
</if>
</trim>
巨坑:MySQL连接数据库时,添加语句:“&allowMultiQueries=true”
作用:
1.可以在sql语句后携带分号,实现多语句执行。
2.可以执行批处理,同时发出多个SQL语句。
4、处理特殊字符
格式包含
<![CDATA[
内容
]]>
如:字符串模糊查询
<if test="nickname != null and nickname !=''">
AND (nickname LIKE CONCAT('%', #{nickname}, '%') OR cellphone = #{cellphone})
</if>