Mybatis动态SQL代码实例
时间: 2023-06-01 20:04:18 浏览: 243
假设有一个User表,有id、name、age、gender四个字段,我们要根据不同的查询条件来动态生成SQL语句。
首先,我们需要在Mapper文件中定义一个<select>节点,如下:
```
<select id="getUserList" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
<if test="gender != null and gender != ''">
AND gender = #{gender}
</if>
</where>
</select>
```
其中,parameterType指定了参数类型,resultType指定了返回值类型。
<where>标签里面是动态生成的查询条件,其中<if>标签用于判断查询条件是否存在,如果存在则生成相应的SQL语句。
例如,如果只查询id为1的记录,那么传入的参数为{id: 1},生成的SQL语句为:
```
SELECT * FROM user
WHERE id = 1
```
如果查询name为"Tom"、age为20的记录,传入的参数为{name: "Tom", age: 20},生成的SQL语句为:
```
SELECT * FROM user
WHERE name = 'Tom' AND age = 20
```
如果只查询gender为"男"的记录,传入的参数为{gender: "男"},生成的SQL语句为:
```
SELECT * FROM user
WHERE gender = '男'
```
这样,我们就可以根据不同的查询条件来动态生成SQL语句了。
阅读全文