2. 功能篇2 其他常见查询

1 查询总数

  1. 查询某张表里有多少条记录。
  2. 以注解的方式,用SQL的count函数记录行数。
  1. v //总数查询
  2. @Select(" select count(*) from category_ ")
  3. public int count();
  1. 调用这个函数
  1. SqlSession session = sqlSessionFactory.openSession();
  2. CategoryMapper mapper = session.getMapper(CategoryMapper.class);
  3. System.out.println(mapper.count());

2 分页查询

2.1 xml文件的方式查询

  1. 通过if动态sql语句
  1. <!-- 通过XML动态语句分页 -->
  2. <select id="listCategory" resultType="Category">
  3. select * from category_
  4. <if test="start!=null and count!=null">
  5. limit #{start},#{count}
  6. </if>
  7. </select>
  1. 测试
  1. // 通过xml动态语句的方式分页
  2. System.out.println("通过xml动态语句的方式分页");
  3. Map<String,Object> params = new HashMap<>();
  4. //从0开始的5个
  5. params.put("start", 0);
  6. params.put("count", 5);
  7. List<Category> cs =session.selectList("listCategory", params);
  8. for (Category c : cs) {
  9. System.out.println(c);
  10. }

2.2 注解的方式查询

  1. 通过注解,在参数前加上Param注解可以直接传入参数。
  1. //用注解的方式分页
  2. @Select(" select * from category_ limit #{start},#{count}")
  3. public List<Category> listByPage(@Param("start") int start, @Param("count")int count);
  1. 测试
  1. // 通过注解方式分页
  2. CategoryMapper mapper = session.getMapper(CategoryMapper.class);
  3. System.out.println("通过注解的方式分页");
  4. List<Category> cs =mapper.listByPage(2, 5);
  5. for (Category c : cs) {
  6. System.out.println(c);

2.3 pageHelper工具查询

  1. 配置pageHelper插件。
    1. 添加pagehelper包。
    2. MyBatis主配置文件下添加该插件,在typealiases节点后
  1. <typeAliases>
  2. <package name="com.huang.model" />
  3. </typeAliases>
  4. <plugins>
  5. <!-- 分页工具插件 -->
  6. <plugin interceptor="com.github.pagehelper.PageInterceptor">
  7. </plugin>
  8. </plugins>
  1. 测试
    1. 可以通过PageHelper类的静态方法设置起始行、显示行数
  1. //分页器设置
  2. PageHelper.offsetPage(3, 5);
  3. //所有查询的默认分页都为如上设置
  4. System.out.println("list方法");
  5. CategoryMapper mapper=session.getMapper(CategoryMapper.class);
  6. List<Category> cs = mapper.list();
  7. for (Category c : cs) {
  8. System.out.println(c.getName());
  9. }
  1. 可以把查询结果实例化后获得具体的分页信息
  1. //把分页信息保留在分页器对象里
  2. PageInfo pageInfo = new PageInfo<>(cs);
  3. System.out.println("总数:"+pageInfo.getTotal());
  4. System.out.println(pageInfo);

3 总结

  1. 查询总数,使用count关键字
  2. 分页查询
    1. xml文件
    2. 注解方式,通过param注解传入参数。
    3. pagehelper可以获得具体的分页信息。