0%

在去 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}

使用Springboot集成了 mybatis-plus,在开发时,往往希望在控制台里面能看到 sql 语句,甚至查询结果,以便于高效开发。

在 Springboot 的yml文件里面加入如下内容:

1
2
3
4
mybatis-plus:
configuration:
# 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台)
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl