myBatis中实现简单的模糊分页查询功能

本文介绍了在myBatis中如何实现简单的模糊分页查询功能。通过XML配置和UserMapper接口,结合PageBean类存储查询参数,完成对User类name属性的模糊查询和分页操作。此外,提到了PageHelper插件作为更简便的分页解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始模糊分页查询前先回顾下模糊查询与分页查询吧,贴个简单的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插件来实现各种分页功能,代码更简洁更简单,此处就不再对其进行详述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值