一、*标签
- sql – 可被其他语句引用的可重用语句块。
<sql > where valid = 1 </sql> <select id = 'queryUser'>select * from user <include refid = 'valid'></include>
- insert – 映射插入语句
<insert id = "saveUser">insert into User (id,name,sex) values (#{id},#{name},#{sex})<insert>
- update – 映射更新语句
<update > update User set name = #{name}, sex= #{sex} where id = #{id} </update>
- delete – 映射删除语句
<delete > delete from User where id = #{id} </delete>
- select – 映射查询语句
<select parameterType="int" resultType="hashmap">
SELECT * FROM UserWHERE ID = #{id}
</select>
二、动态sql标签
- if
<select resultType="User"> SELECT * FROM User WHERE valid = 1 <if test="name!= null"> AND name like #{name} </if> </select>
- choose (when, otherwise)
<select resultType="User"> SELECT * FROM User WHERE age = 26 <choose> <when test="name!= null"> AND name like #{name} </when> <when test="sex!= null "> AND sex like #{sex} </when> <otherwise> AND valid = 1 </otherwise> </choose> </select>
- trim (where, set)
//prefixOverrides 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在 prefixOverrides 属性中的内容,并且插入 prefix 属性中指定的内容。 <trim prefix="WHERE" prefixOverrides="AND |OR "> ... </trim> //set 元素会动态前置 SET 关键字,同时也会删掉无关的逗号 <trim prefix="SET" suffixOverrides=","> ... </trim>
foreach
//collection="要遍历的集合"
//item = "可以在元素体内使用的集合项"
//index = "索引"
//open = "开始字符串"
//separator = "分隔符"
//close = "结束字符串"
<select resultType="User">
SELECT *
FROM User
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
bind
//bind可以创建一个变量并将其绑定到上下文
<select resultType="user">
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
SELECT * FROM User
WHERE name LIKE #{pattern}
</select>