mybaits写动态查询sql
时间: 2023-07-13 08:09:21 浏览: 101
MyBatis可以使用动态SQL来编写动态查询SQL语句。动态SQL可以根据不同的条件来生成不同的SQL语句,从而实现灵活的查询。
下面是一个使用动态SQL的例子:
```xml
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1=1
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
<if test="gender != null">
AND gender = #{gender}
</if>
</select>
```
在这个例子中,我们使用了`<if>`元素来判断是否需要加入相应的查询条件。如果`name`参数不为空,则加入`name = #{name}`的查询条件;如果`age`参数不为空,则加入`age = #{age}`的查询条件;如果`gender`参数不为空,则加入`gender = #{gender}`的查询条件。
这样,我们就可以根据不同的参数来生成不同的SQL语句,实现动态查询。
相关问题
mybaits 动态sql
MyBatis提供了一种灵活的方式来声明动态SQL语句,这使得开发人员可以根据需要构建非常复杂的动态查询。
动态SQL的主要用途是创建灵活的查询条件。MyBatis提供了以下动态SQL元素:
1. if元素:它可以在SQL语句中添加条件判断,如果满足条件,则将某些语句添加到SQL语句中。
2. choose元素:它类似于Java中的switch语句,可以根据条件选择一条或多条SQL语句执行。
3. where元素:它可以在SQL语句中添加WHERE子句,而且只有在至少有一个条件满足时才会添加WHERE子句。
4. set元素:它可以在SQL语句中添加SET子句,用于更新数据表中的记录。
5. foreach元素:它可以用于循环遍历一个集合,并将集合中的元素插入到SQL语句中。
使用这些动态SQL元素,我们可以动态地构建复杂的SQL语句,实现灵活的查询条件。
mybaits-plus简化SQL
MyBatis-Plus 是一个 MyBatis 的增强工具,它提供了许多功能,其中之一就是简化 SQL 的编写。下面演示一些 MyBatis-Plus 简化 SQL 的例子:
1. 查询条件构造器
使用 QueryWrapper 可以方便地构造查询条件,例如:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom").ge("age", 18).orderByDesc("id");
List<User> userList = userMapper.selectList(wrapper);
```
这个例子中,我们使用 QueryWrapper 来构造查询条件,其中 eq 表示等于,ge 表示大于等于,orderByDesc 表示降序排序。最后使用 selectList 方法查询符合条件的数据。
2. 分页查询
使用 Page 对象可以轻松实现分页查询,例如:
```
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, null);
List<User> userList = userPage.getRecords();
```
这个例子中,我们创建了一个 Page 对象,指定查询第一页的 10 条数据。然后使用 selectPage 方法查询符合条件的数据,并将结果封装在一个 IPage 对象中。最后从 IPage 对象中获取查询结果。
3. Lambda 表达式
使用 Lambda 表达式可以更加简洁地构造查询条件,例如:
```
List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery()
.eq(User::getName, "Tom")
.ge(User::getAge, 18)
.orderByDesc(User::getId));
```
这个例子中,我们使用 Wrappers.lambdaQuery() 创建一个 LambdaQueryWrapper 对象,然后使用 eq 方法指定查询条件,ge 方法指定大于等于条件,orderByDesc 指定降序排序。最后使用 selectList 方法查询符合条件的数据。
以上是 MyBatis-Plus 简化 SQL 的几个例子,这些功能可以大大简化 SQL 的编写,提高开发效率。
阅读全文