XML形式使用Wrapper是Mybatis-Plus的常见用法之一,通过Wrapper可以更加方便地构造动态查询条件。本文将介绍Mybatis-Plus中XML形式使用Wrapper的方法。

1. 引入依赖

使用Mybatis-Plus之前,需要先引入相应的依赖。在pom.xml文件中添加如下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>最新版本号</version>
</dependency>

2. 创建Mapper接口

创建一个Mapper接口,用于操作数据库。在接口中继承BaseMapper并指定要操作的实体类,例如:

public interface UserMapper extends BaseMapper<User> {
}

3. 创建XML文件

在resources目录下创建一个与实体类对应的XML文件,用于编写SQL语句。例如,创建UserMapper.xml文件,并在其中编写查询方法:

<mapper namespace="com.example.mapper.UserMapper">
    <!-- 查询条件 -->
    <sql id="condition">
        <where>
            <if test="null != username">
                AND username = #{username}
            </if>
            <if test="null != age">
                AND age = #{age}
            </if>
        </where>
    </sql>
    
    <select id="selectUsers" resultMap="UserResultMap">
        SELECT * FROM user
        <include refid="condition"/>
    </select>
    
    <resultMap id="UserResultMap" type="com.example.entity.User">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="age" property="age"/>
    </resultMap>
</mapper>

这里使用<sql>标签定义了一个条件片段,通过<if>标签判断是否要拼接该条件,从而实现动态查询。

4. 使用Wrapper查询

在Service层中调用Mapper的方法实现查询。使用QueryWrapper类可以更加便捷地构造查询条件,例如:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> selectUsers(String username, Integer age) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", username);
        queryWrapper.eq("age", age);
        return userMapper.selectList(queryWrapper);
    }
}

在上述代码中,首先创建了一个QueryWrapper对象,并通过eq方法给该对象设置查询条件。然后调用userMapper的selectList方法,并将QueryWrapper对象作为参数传入,即可实现基于条件查询。

通过以上四个步骤,我们就可以在XML形式中使用Wrapper来构造动态查询条件了。在实际开发过程中,可以根据需要灵活运用Wrapper的各种方法,实现更加复杂的查询功能。