mapper中判断语句例子
时间: 2023-08-02 10:05:44 浏览: 37
假设我们有一个 `User` 类,其中有一个名为 `age` 的属性,我们想根据用户的年龄范围来查询用户,可以使用以下代码:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE age BETWEEN #{minAge} AND #{maxAge}")
List<User> findByAge(@Param("minAge") int minAge, @Param("maxAge") int maxAge);
}
```
在上述代码中,我们使用了 SQL 的 `BETWEEN` 关键字来查询 `age` 属性在指定范围内的用户。使用 `#{}` 语法来引用方法参数,其中 `minAge` 和 `maxAge` 是方法参数的名称。因为我们在查询语句中引用了方法参数,所以需要使用 `@Param` 注解来指定方法参数的名称。
相关问题
mapper.xml中判断语句例子
假设有一个表 `user`,其中包含 `id`、`name` 和 `age` 三个字段,下面是一个 mapper.xml 文件中的判断语句例子:
```xml
<!-- 根据 id 查询用户信息 -->
<select id="getUserById" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 根据条件查询用户信息 -->
<select id="getUserByCondition" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name LIKE CONCAT('%',#{name},'%')
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
以上代码中,`getUserById` 方法根据 `id` 查询用户信息,参数类型为 `int`,返回类型为 `User`。SQL 语句直接写在 `<select>` 标签内部,使用 `#{id}` 占位符表示参数。
`getUserByCondition` 方法根据条件查询用户信息,参数类型为 `map`,返回类型为 `User`。SQL 语句中使用了 `<where>` 标签,其内部的 `<if>` 标签用于判断条件是否成立,如果成立则拼接对应的 SQL 语句。例如,如果 `name` 参数不为空,则拼接 `AND name LIKE CONCAT('%',#{name},'%')`;如果 `age` 参数不为空,则拼接 `AND age = #{age}`。最终的 SQL 语句为 `SELECT * FROM user WHERE (name LIKE CONCAT('%',#{name},'%') AND age = #{age})`。
mybatis中根mapper的sql语句据条件查询数据库需要判断非空
在 MyBatis 中,根据条件查询数据库需要判断非空的话,可以使用 `<if>` 标签来判断条件是否成立,例如:
```xml
<select id="selectUsers" parameterType="Map" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
在上面的例子中,如果传入的参数 `name` 或者 `age` 不为 `null`,则会在 SQL 语句中加上对应的条件。
注意,在使用 `<if>` 标签时,需要将 SQL 语句的 WHERE 关键字放在 `<where>` 标签中,否则如果所有条件都不成立,SQL 语句会出错。