在去 xml 的时代,使用 mybatis 的时候写 xml 我觉得并不是一个好的实践。不过在维护一些老的项目中,还是在使用xml配置文件,所以基本的配置还是得会。
创建
设置 useGeneratedKeys
为 true 时,当插入记录后,自增的 id 的值会赋值到 UserPo 的 id 属性里面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <insert id="create" useGeneratedKeys="true" keyProperty="id" parameterType="UserPo"> INSERT INTO user <trim prefix="(" suffix=")" suffixOverrides=","> <if test="username != null"> username, </if> <if test="age != null"> age, </if> </trim> <trim prefix="VALUES (" suffix=")" suffixOverrides=","> <if test="username != null"> #{username}, </if> <if test="age != null"> #{age}, </if> </trim> </insert>
|
更新
如果 id 没有值,就不用更新。
如果 username 和 age 都为空时,SQL语句会报错。如果你要更新,至少有一个字段一定是有值的。
注意,SET key1 = val1, key2 = val2
,字段之间是由逗号分隔的,而不是AND
,在生产上执行这条语句时得非常小心。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <update id="update" parameterType="UserPo"> <if test="id != null"> UPDATE user <set> <if test="username != null"> username = #{username}, </if> <if test="age != null"> age = #{age}, </if> </set> WHERE id = #{id} </if> </update>
|
查询
WHERE 字句。
每句话前面加关键字 AND
。
1 2 3 4 5 6
| <where> <if test="username != null"> AND username = #{username} </if> AND age = 18 </where>
|
运算
假如我要在xml配置里面进行运算,比如把 age 加 1 ,写法如下:
${age + 1}