Mybatis动态SQL
Posted fcitx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis动态SQL相关的知识,希望对你有一定的参考价值。
1.添加数据设置(Newsxml配置)
<insert id="doCreate" parameterType="News" keyProperty="nid" keyColumn="nid" useGeneratedKeys="true"><!--添加数据-->
INSERT INTO news VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">,</trim>
</insert>
2.if语句添加配置
<insert id="doCreate" parameterType="News" keyProperty="nid" keyColumn="nid" useGeneratedKeys="true"> INSERT INTO news(title,content) VALUES <trim prefix="(" suffix=")" suffixOverrides=","> <if test="title == null"> ‘NOTitle‘, </if> <if test="title != null"> #title, </if> <if test="content == null"> ‘NOContent‘, </if> <if test="content != null"> #content, </if> </trim> </insert>
3.if判断分页查询
<select id="findSplit" resultType="News" parameterType="java.util.Map"> SELECT nid,title,content FROM news <if test="column != null and keyword != null and column != "" and keyword != """> WHERE $column LIKE #keyword </if> LIMIT #start,#lineSize ; </select> <select id="getAllCount" resultType="java.lang.Long" parameterType="java.util.Map"> SELECT COUNT(*) FROM news <if test="column != null and keyword != null and column != "" and keyword != """> WHERE $column LIKE #keyword </if> </select>
4.多次判断,if只能执行一次判断
<select id="findAllCondition" resultType="News" parameterType="java.util.Map"> SELECT nid,title FROM news <where> <choose> <when test="nid != null and title !=null and content !=null"> nid=#nid AND title=#title AND content=#content </when> <when test="nid != null and title !=null and content==null"> nid=#nid AND title=#title </when> <when test="nid != null and title ==null and content!=null"> nid=#nid AND content=#content </when> </choose> </where> </select>
5.set动态更新
<update id="doEdit" parameterType="News"> UPDATE news <set> <if test="title != null and title != """> title=#title, </if> <if test="content != null and content != """> content=#content, </if> </set> <where> <if test="nid != null and nid != 0"> nid=#nid </if> </where> </update>
6.指定范围数据查询foreach
<select id="findByIds" resultType="News" parameterType="java.lang.Long"> <include refid="selectBase"/> <where> nid IN <foreach collection="array" open="(" close=")" separator="," item="ele"> #ele </foreach> </where> </select>
7.批量删除foreach
<delete id="doRemoveByIds" parameterType="java.lang.Long"> DELETE FROM news <where> nid IN <foreach collection="array" open="(" close=")" separator="," item="ele"> #ele </foreach> </where> </delete>
以上是关于Mybatis动态SQL的主要内容,如果未能解决你的问题,请参考以下文章