// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper);
// 查询(根据ID 批量查询)
List selectBatchIds(@Param(Constants.COLLECTION) Collection extends Serializable> idList);
// 根据 entity 条件,查询全部记录
List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);
// 查询(根据 columnMap 条件)
List selectByMap(@Param(Constants.COLUMN_MAP) Map columnMap);
// 根据 Wrapper 条件,查询全部记录
List
类型 | 参数名 | 描述 |
---|---|---|
Serializable | id | 主键ID |
Wrapper | queryWrapper | 实体对象封装操作类(可以为 null) |
Collection extends Serializable> | idList | 主键ID列表(不能为 null 以及 empty) |
Map |
columnMap | 表字段 map 对象 |
IPage | page | 分页查询条件(可以为 RowBounds.DEFAULT) |
// 测试查询
@Test
void test1() {
User user = userMapper.selectById(1L);
System.out.println(user);
}
// 测试批量查询
@Test
void test2() {
List users = userMapper.selectBatchIds(Arrays.asList(1L,2L,3L));
users.forEach(System.out::println);
}
// 条件查询 map
@Test
void test3() {
HashMap map = new HashMap<>();
map.put("name","Tom");
map.put("age","28");
List users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
第一步:配置拦截器组件即可 ( MybatisPlusConfig.java )
// 分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
//paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
第二步:直接使用 Page 对象
// 测试分页查询
@Test
void testPage() {
// 参数一:当前页 参数二:页面大小
Page page = new Page<>(2, 3);
userMapper.selectPage(page, null);
page.getRecords().forEach(System.out::println);
}
结果:
JsqlParserCountOptimize sql=SELECT id,name,age,email,version,creat_time,update_time FROM user
==> Preparing: SELECT COUNT(1) FROM user
==> Parameters:
<== Columns: COUNT(1)
<== Row: 5 ==> Preparing: SELECT id,name,age,email,version,creat_time,update_time FROM user LIMIT 3,3
==> Parameters:
<== Columns: id, name, age, email, version, creat_time, update_time
<== Row: 4, Sandy, 21, [email protected], 1, null, null
<== Row: 5, Billie, 111, [email protected], 1, null, 2020-03-23 00:41:24.458000
<== Total: 2
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38d525aa]
User(id=4, name=Sandy, age=21, [email protected], version=1, creatTime=null, updateTime=null)
User(id=5, name=Billie, age=111, [email protected], version=1, creatTime=null, updateTime=Mon Mar 23 00:41:24 CST 2020)