ssm使用mybatis分页插件实现模糊查询和显示
1、步骤一引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
2、xml中配置插件
官方文档有两种配置分页拦截器插件
注:两种方式只能选择一个,不然会报找不到bean 等异常,我一般选择第二种
2.1、在 MyBatis 配置 xml 中配置拦截器插件
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
2.2、在 spring配置文件中配置拦截器插件
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="factoryBean" >
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
3、mapper接口
List<User> findByName(@Param("username")String username);
4、xml中sql语句
<select id="findByName" parameterType="com.xbj.po.User" resultType="com.xbj.po.User">
select
<include refid="Base_Column_List" />
from users
<where>
<if test="_parameter != null ">
and username LIKE '%' #{username} '%'
</if>
</where>
</select>
5、service接口和实现类
//service接口
List<User> findByName(@Param("username")String username);
//service实现类
/*
* 模糊查询
* */
public List<User> findByName(@Param("username")String username) {
List<User> userList=userMapper.findByName(username);
return userList;
}
6、controller实现
@RequestMapping(value = "/show")
public String toIndex(@RequestParam(required = true,defaultValue="1")Integer page,Model model,
@RequestParam(value = "username",defaultValue="")String username,
HttpServletRequest request){
PageHelper.startPage(page,10);
List<User> userList=userService.findByName(username);
PageInfo<User> pageInfo=new PageInfo<User>(userList);
model.addAttribute("page",pageInfo);
model.addAttribute("userList",userList);
return "user/index";
}
7、jsp页面渲染
<form action="${pageContext.request.contextPath}/user/show" method="post">
查询关键字:<input type="text" name="username" placeholder="请输入用户名" />
<input type="submit"></input>
</form>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.sex}</td>
</tr>
</c:forEach>
<!-- 分页信息 -->
<div class="col-md-6">
<p>每页${page.pageSize}条 当前页${page.size}条 ${page.pageNum}/${page.pages}页
记录数${page.total}</p>
<c:if test="${page.isFirstPage==true}"><a>首页</a> </c:if>
<c:if test="${page.isFirstPage==false}">
<a href="/user/show?page=${page.firstPage}">首页</a>
</c:if>
<c:if test="${page.hasPreviousPage==true}">
<a href="/user/show?page=${page.prePage}">上一页</a>
</c:if>
<c:if test="${page.hasPreviousPage==false}"><a >上一页</a> </c:if>
<c:if test="${page.hasNextPage==true}">
<a href="/user/show?page=${page.nextPage}">下一页</a>
</c:if>
<c:if test="${page.hasNextPage==false}"><a >下一页</a> </c:if>
<c:if test="${page.isLastPage==true}"><a >末页</a> </c:if>
<c:if test="${page.isLastPage==false}">
<a href="/user/show?page=${page.lastPage}">末页</a>
</c:if>
</div>