一、基本概念
1.1 介绍
mybatis-plus是mybatis的增强工具,封装了很多常用的操作,提高了开发效率,降低了开发难度。而其中mybatis-plus的selectList是其最为重要的功能之一,主要用于查询操作。它提供了一种基于Java对象的SQL查询方式,可以避免一些常见的错误。下面我们来了解一下mybatis-plus selectList的更多信息。
1.2 基础用法
调用Mapper接口的selectList方法,就可以进行列表查询,例如:
List<User> userList = userMapper.selectList(new QueryWrapper<User>().lambda().eq(User::getAge, 18));
其中,new QueryWrapper<User>().lambda()
生成查询条件,.eq(User::getAge, 18)
代表按照年龄为18来查询,返回结果为User对象列表。
1.3 高级用法
mybatis-plus的selectlist还提供了很多高级用法,例如分页查询、自定义查询、拓展查询等。下面我们将分别进行介绍。
二、分页查询
2.1 基础分页查询
mybatis-plus提供了IPage接口和Page类,可以方便地进行分页查询。例如:
IPage<User> userIPage = userMapper.selectPage(new Page<>(1, 10), new QueryWrapper<User>().lambda().eq(User::getAge, 18));
其中,new Page<>(1,10)
代表查询第1页,每页返回10条数据。IPage<User>
返回结果为User对象分页列表。
2.2 自定义分页查询
如果需要自定义分页查询,可以继承mybatis-plus提供的PaginationInterceptor类,并实现其intercept方法,例如:
public class CustomPaginationInterceptor extends PaginationInterceptor {
@Override
public Page<?> paginate(Page<?> page, IPage<?> iPage, Map<String, Object> map) {
int pageSize = MyThreadLocal.getPageSize();
int pageNum = MyThreadLocal.getPageNum();
page.setCurrent(pageNum);
page.setSize(pageSize);
return page;
}
}
其中,MyThreadLocal是一个线程安全的变量,用于存储每个线程的分页参数(例如每页返回多少条数据、查询第几页数据),实现多用户同时查询的分页查询需求。
三、自定义查询
3.1 基础用法
mybatis-plus的selectlist还提供了自定义查询的方法,可以根据自己的需求自由编写SQL语句。例如:
@Select("select * from user where age = #{age}")
List<User> selectByAge(@Param("age") Integer age);
其中,@Select
表示使用自定义SQL,#{age}
代表使用参数age进行查询。
3.2 拓展查询
如果需要拓展查询,可以使用mybatis-plus提供的Wrapper和SqlHelper类。例如:
public interface UserMapper extends BaseMapper<User> {
@Select("select count(id) from user where age = #{age}")
Integer countByAge(@Param("age") Integer age);
default boolean existUser(Integer age) {
Integer count = selectCount(new QueryWrapper<User>().lambda().eq(User::getAge, age));
return count != null && count > 0;
}
}
其中,countByAge
是一个自定义SQL,用于查询满足条件的数据量。existUser
是一个自定义方法,用于查询是否存在满足条件的数据,其内部实现则是调用了mybatis-plus提供的selectCount
方法。
四、总结
4.1
mybatis-plus selectList是mybatis-plus提供的一个非常方便的查询功能,可以方便地进行列表查询、分页查询、自定义查询和拓展查询。
4.2
需要注意的是,mybatis-plus selectList中只能查询Java对象,而不能查询非Java对象,否则会出现异常。同时,mybatis-plus selectList中的查询条件需按照Java对象的属性进行传递,否则也会出现异常。
4.3
综上所述,mybatis-plus selectList是一种非常实用的查询工具,对于Java开发人员来说,掌握其基本用法和高级功能,有助于提高开发效率和减少出错率。