myBatis中实现简单的模糊分页查询功能
2019-06-21 21:03
531 查看
在开始模糊分页查询前先回顾下模糊查询与分页查询吧,贴个简单的sql语句
1.模糊查询 select* from user where name like xxx;
2.分页查询 select* from user limit (currentPage-1)*pageSize, pageSize;
顾名思义,模糊分页查询是将以上两者的功能相结合的产物,在我们平时的网络生活中也个屡见不鲜的应用。关于myBatis的xml配置我这里就不赘述了,主要是讲该查询方法的实现,此处是以User类中的name属性为关键词查询,先贴userMapper.xml的内容:
<!-- 模糊查询条数 --> <select id="queryCountLike" resultType="java.lang.Integer"> select count(*) from user where name like "%"#{keyWord}"%" </select> <!-- 模糊分页查询1 --> <select id="queryLikeForPage" resultType="com.boyu.domain.User"> select* from user where name like "%"#{keyWord}"%" limit #{startIndex}, #{pageSize} </select>
接下来是UserMapper接口的方法申明:
public interface UserMapper { //模糊查询条数 public int queryCountLike(String keyWord); //模糊加分页查询 public List<User> queryLikeForPage(Map<String, Object> map); }
最后是测试类:
public class testMybatis { MyBatisUtil myBatilUtil = new MyBatisUtil(); SqlSession session = myBatilUtil.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); @Test public void queryLikeForPage() { PageBean bean = new PageBean(); String keyWord = "siri"; //设置查询页与当页数据量 bean.setCurrentPage(1); bean.setPageSize(4); //模糊查询总条数 int countLike = userMapper.queryCountLike(keyWord); //计算模糊查询数据的页数 bean.setTotalSize(countLike); //创建map Map<String, Object> map = new HashMap<String, Object>(); map.put("startIndex", bean.getStartIndex()); map.put("pageSize", bean.getPageSize()); map.put("keyWord", keyWord); //返回数据列表 List<User> users = userMapper.queryLikeForPage(map); for (User user2 : users) { System.out.println(user2); } System.out.println("第"+bean.getCurrentPage()+"页/共"+bean.getTotalPage() +"页。共"+countLike+"条记录"); myBatilUtil.closeSession(session); } }
另外,这里创建了一个PageBean类来保存相关的查询字段,比如当前页currentPage,页面数据量大小pageSize, 表中数据量totalSize等等,具体内容如下:
public class PageBean { private Integer currentPage; private Integer pageSize; private Integer totalSize; private Integer startIndex; private Integer totalPage; public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; this.startIndex = (this.currentPage-1)*this.pageSize; } public Integer getTotalSize() { return totalSize; } public void setTotalSize(Integer totalSize) { this.totalSize = totalSize; this.totalPage = (int)(Math.ceil(this.totalSize*1.0/this.pageSize)); } public Integer getStartIndex() { return startIndex; } public Integer getTotalPage() { return totalPage; } }
这样,一个简单的模糊分页查询就完成了。值得一提的是,我们也可以采用PageHelper插件来实现各种分页功能,代码更简洁更简单,此处就不再对其进行详述了。
相关文章推荐
- mybatis分页及模糊查询功能实现
- Mybatis实现简单的分页,以及基本的查询修改功能
- springmvc + myBatis + boostrap技术下简单实现的前后端分页功能
- 用Criteria进行模糊查询实现简单的搜索功能
- spring-mybatis实现简单模糊查询
- springmvc+Mybatis 分页查询的简单实现
- jQuery基于xml格式数据实现模糊查询及分页功能的方法
- MyBatis实现动态查询、模糊查询功能
- 用Criteria进行模糊查询实现简单的站内搜索功能
- 微服务架构实战篇(三):Spring boot2.0 + Mybatis + PageHelper实现增删改查和分页查询功能
- MyBatis简单的增删改查以及简单的分页查询实现
- jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
- 在mybatis中实现oracle分页和模糊查询
- Angular简单的例子实现分页和模糊查询
- mybatis+oracle实现分页查询--非常简单实用
- MyBatis简单的增删改查以及简单的分页查询实现
- AngularJS+Bootstrap 分页功能实现,同时支持模糊查询分页
- 分页查询简单实现(Freemarker+SpringMVC+Mybatis)
- 家庭财务管理系统实战4- mybatis分页查询功能改进实现
- 用C# 简单实现带查询功能的ComboBox组件