1. if
创新互联公司是一家专业从事成都网站制作、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联公司依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!
This statement would provide an optional text search type of functionality.
<select id="findActiveBlogWithTitleLike" resultType="Blog">
SELECT * FROM BLOG
WHERE state = 'ACTIVE'
<if test="title != null">
AND title = #{title}
</if>
</select>
2. choose, when, otherwise
Sometimes we don’t want all of the conditionals to apply, instead we want to choose only one case among many options.
<select id="findActiveBlogLike" resultType="Blog">
SELECT * FROM BLOG WHERE state = 'ACTIVE'
<choose>
<when test="title != null">
AND title = #{title}
</when>
<when test="author != null and author.name != null">
AND author_name = #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>
3. set
The set element can be used to dynamically include columns to update,and leave out others.
A:
<update id="updateAuthorIfNecessary">
update Author
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="bio != null">bio=#{bio}</if>
</set>
where id=#{id}
B:
</update>
<update id="updateAuthorIfNecessary">
update Author set
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="bio != null">bio=#{bio}</if>
where id=#{id}
</update>
Ifbiois null
A.update Author setusername='xx',password='xx',email ='xx'[not has, due to <set> tag will remove it] where id ='x'
B.update Author set username ='xx',password='xx',email ='xx', where id ='x'
4. foreach
The foreach element is very powerful, and allows you to specify a collection, declare item and index variables that can be used inside the body of the element. It also allows you to specify opening and closing strings, and add a separator to place in between iterations. The element is smart in that it won’t accidentally append extra separators.
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
1. trim
<trim prefix="WHERE" prefixOverrides="AND |OR ">
...</trim>
Sample:
select * from user
<trim prefix="WHERE"prefixoverride="AND |OR">
<if test="name != nullandname.length()>0"> AND name=#{name}</if>
<if test="gender != null and gender.length()>0"> AND gender=#{gender}</if>
</trim>
Ifname andgenderare not null, the SQL will be like this:select * from user where name = 'xx' and gender = 'xx'.
prefix:前缀
prefixoverride: remove 1st AND/OR
update user
<trim prefix="set"suffixoverride="," suffix=" where id = #{id} ">
<if test="name != null and name.length()>0"> name=#{name} , </if>
<if test="gender != null and gender.length()>0"> gender=#{gender}, </if>
</trim>
Ifname andgenderare not null, the SQL will be like this:update user set name='xx' , gender='xx' where id='x'.
suffix: 后缀
suffixoverride: remove last character “,”
where:search condition
Note
A)Escape character in MyBatis XML
Sample:
where id >= 1(wrong)
where id >= 1(correct)
B)mybatis中#{}和${}的区别
http://www.cnblogs.com/baizhanshi/p/5778692.html
By default, using the #{} syntax will cause MyBatis to generate PreparedStatement properties and set the values safely against the PreparedStatement parameters (e.g. ?). While this is safer, faster and almost always preferred, sometimes you just want to directly inject a string unmodified into the SQL Statement. For example, for ORDER BY, you might use something like this:
ORDER BY ${columnName}
Here MyBatis won't modify or escape the string.
NOTE It's not safe to accept input from a user and supply it to a statement unmodified in this way. This leads to potential SQL Injection attacks and therefore you should either disallow user input in these fields, or always perform your own escapes and checks.
分享名称:MyBatis常用语法和注意事项
浏览地址:https://www.cdcxhl.com/article26/pjjpjg.html
成都网站建设公司_创新互联,为您提供标签优化、定制开发、企业建站、App开发、建站公司、网站内链
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联