mybatis-plus 自定义sql拼接 的方式进行Wrapper条件查询 实现了分页 多表查询
在MyBatis-Plus中,可以通过QueryWrapper
或LambdaQueryWrapper
来实现自定义SQL拼接的方式进行条件查询,并且可以很容易地实现分页和多表查询。以下是一个使用自定义SQL进行分页查询和多表查询的例子:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
// 假设有一个User实体和对应的UserMapper
public interface UserMapper extends BaseMapper<User> {
// 自定义分页查询SQL
@Select("SELECT * FROM user u LEFT JOIN department d ON u.department_id = d.id ${ew.customSqlSegment}")
Page<User> selectUserPage(Page<?> page, @Param(Constants.WRAPPER) QueryWrapper<User> queryWrapper);
}
// 使用
Page<User> page = new Page<>(1, 10); // 第1页,每页10条数据
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三"); // 假设我们要查询名字为张三的用户
queryWrapper.select("u.*, d.name as department_name"); // 只查询用户表和部门表中的部分字段
Page<User> result = userMapper.selectUserPage(page, queryWrapper);
在这个例子中,我们定义了一个UserMapper
接口,并在接口中定义了一个自定义的分页查询方法selectUserPage
。这个方法使用了MyBatis的注解@Select
来指定自定义的SQL语句,并且通过${ew.customSqlSegment}
来插入MyBatis-Plus提供的动态SQL部分。
在调用时,我们创建了一个Page
对象来指定分页信息,并创建了一个QueryWrapper
对象来指定查询条件,然后将这个QueryWrapper
对象作为参数传递给我们的自定义方法。
这个例子展示了如何在MyBatis-Plus中结合Page
插件实现分页,以及如何通过QueryWrapper
来自定义查询条件和选择的字段。
评论已关闭