您的位置:首页 > 其它

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插件来实现各种分页功能,代码更简洁更简单,此处就不再对其进行详述了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: