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可以获得具体的分页信息。