2. 功能篇2 其他常见查询
1 查询总数
- 查询某张表里有多少条记录。
- 以注解的方式,用SQL的count函数记录行数。
v //总数查询
@Select(" select count(*) from category_ ")
public int count();
- 调用这个函数
SqlSession session = sqlSessionFactory.openSession();
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
System.out.println(mapper.count());
2 分页查询
2.1 xml文件的方式查询
- 通过if动态sql语句
<!-- 通过XML动态语句分页 -->
<select id="listCategory" resultType="Category">
select * from category_
<if test="start!=null and count!=null">
limit #{start},#{count}
</if>
</select>
- 测试
// 通过xml动态语句的方式分页
System.out.println("通过xml动态语句的方式分页");
Map<String,Object> params = new HashMap<>();
//从0开始的5个
params.put("start", 0);
params.put("count", 5);
List<Category> cs =session.selectList("listCategory", params);
for (Category c : cs) {
System.out.println(c);
}
2.2 注解的方式查询
- 通过注解,在参数前加上Param注解可以直接传入参数。
//用注解的方式分页
@Select(" select * from category_ limit #{start},#{count}")
public List<Category> listByPage(@Param("start") int start, @Param("count")int count);
- 测试
// 通过注解方式分页
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
System.out.println("通过注解的方式分页");
List<Category> cs =mapper.listByPage(2, 5);
for (Category c : cs) {
System.out.println(c);
2.3 pageHelper工具查询
- 配置pageHelper插件。
- 添加pagehelper包。
- MyBatis主配置文件下添加该插件,在typealiases节点后
<typeAliases>
<package name="com.huang.model" />
</typeAliases>
<plugins>
<!-- 分页工具插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
- 测试
- 可以通过PageHelper类的静态方法设置起始行、显示行数
//分页器设置
PageHelper.offsetPage(3, 5);
//所有查询的默认分页都为如上设置
System.out.println("list方法");
CategoryMapper mapper=session.getMapper(CategoryMapper.class);
List<Category> cs = mapper.list();
for (Category c : cs) {
System.out.println(c.getName());
}
- 可以把查询结果实例化后获得具体的分页信息
//把分页信息保留在分页器对象里
PageInfo pageInfo = new PageInfo<>(cs);
System.out.println("总数:"+pageInfo.getTotal());
System.out.println(pageInfo);
3 总结
- 查询总数,使用count关键字
- 分页查询
- xml文件
- 注解方式,通过param注解传入参数。
- pagehelper可以获得具体的分页信息。