分页模糊查询示例代码

//分页模糊查询工具类Page
import java.util.List;

/**
 * 分页
 *
 */
public class Page<T> {

    /**
     * currentPage 当前页
     */
    private int currentPage = 1;
    /**
     * pageSize 每页大小
     */
    private int pageSize = 3;
    /**
     * pageTotal 总页数
     */
    private int pageTotal;
    /**
     * recordTotal 总条数
     */
    private int recordTotal = 0;

    /**
     * content 每页的内容
     */
    private List<T> content;


    public List<T> getContent() {
        return content;
    }

    public void setContent(List<T> content) {
        this.content = content;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageTotal() {

        pageTotal = ((recordTotal%pageSize)==0)?(recordTotal/pageSize):((recordTotal/pageSize)+1) ;
        if(pageTotal==0){
            pageTotal=1;
        }
        return pageTotal;
    }

//    public void setPageTotal(int pageTotal) {
//        this.pageTotal = pageTotal;
//    }

    public int getRecordTotal() {
        return recordTotal;
    }

    public void setRecordTotal(int recordTotal) {
        this.recordTotal = recordTotal;
    }



    @Override
    public String toString() {
        return "Page{" +
                "currentPage=" + currentPage +
                ", pageSize=" + pageSize +
                ", pageTotal=" + pageTotal +
                ", recordTotal=" + recordTotal +
                ", content=" + content +
                '}';
    }
}
//分页模糊查询JSP表单搜索
<form class="left-top" action="/login" method="post">
    <input value="getuser" name="method" hidden>
    姓&nbsp;&nbsp;&nbsp;名:<input type="text" id="name" name="uname" value="${name}">
    用户名:<input type="text" id="username" name="uusername" value="${username}">
    性&nbsp;&nbsp;&nbsp;别:<input type="radio" class="sex" name="usex" value="男"
           <c:if test="${sex=='男'}">checked</c:if>>男
    <input type="radio" class="sex" name="usex" value="女"
           <c:if test="${sex=='女'}">checked</c:if>>女&nbsp;&nbsp;&nbsp;
    角&nbsp;&nbsp;&nbsp;色:<select id="rid" name="urid">
    <option value="0">--请选择--</option>
    <c:forEach var="role" items="${rlist}">
    <option value="${role.id}"
            <c:if test="${rid==role.id}">selected</c:if>
    >--${role.name}--</option>
    </c:forEach>
    <input type="submit" value="查询">
</form>
//分页模糊查询显示列表部分
<table>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>用户名</th>
        <th>密码</th>
        <th>性别</th>
        <th>年龄</th>
        <th>爱好</th>
        <th>角色</th>
        <th>操作</th>
    </tr>
    <tbody>
    <c:forEach var="user" items="${page.content}">
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.username}</td>
            <td>${user.password}</td>
            <td>${user.sex}</td>
            <td>${user.age}</td>
            <td>${user.hobby}</td>
            <td>${user.role.name}</td>
            <td>
                <button onclick="upuser(${user.id})" class="fancy-button">修改</button>
                <button onclick="deluser(${user.id})" class="fancy-button">删除</button>
            </td>
        </tr>
    </c:forEach>
    </tbody>
</table>
<span class="bottom">
<button onclick="sw(1)">首页</button>
<button onclick="left(${page.currentPage})">上一页</button>
第${page.currentPage}页/共${page.pageTotal}页
<button onclick="right(${page.currentPage},${page.pageTotal})">下一页</button>
<button onclick="sw(${page.pageTotal})">尾页</button>
共${page.recordTotal}条
</span>
//分页模糊查询换页部分
var uname=document.getElementById("name").value;
var uusername=document.getElementById("username").value;
var urid=document.getElementById("rid").value;
var sex=document.getElementsByClassName("sex");
var usex="";
for(var i=0;i<sex.length;i++){
    if (sex[i].checked==true){
        usex=sex[i].value;
    }
}


function left(pagesize) {
    if (pagesize=="1"){
        alert("已经到达第一页!");
    }else{
        location.href = "/login?method=getuser&pagesize="+(pagesize-1)+"&uname="+uname
            +"&uusername="+uusername+"&usex="+usex+"&urid="+urid;
    }
}
function right(pagesize,size) {
    if (pagesize==size){
        alert("已经到达最后一页!");
    }else{
        location.href = "/login?method=getuser&pagesize="+(pagesize+1)+"&uname="+uname
        +"&uusername="+uusername+"&usex="+usex+"&urid="+urid;
    }
}
function sw(pagesize) {
    location.href = "/login?method=getuser&pagesize="+pagesize+"&uname="+uname
        +"&uusername="+uusername+"&usex="+usex+"&urid="+urid;
}
//分页模糊查询servlet处理数据
private void getuser(HttpServletRequest req, HttpServletResponse resp) {
    Page page = new Page();
    String pagesize = req.getParameter("pagesize")==null?"1":req.getParameter("pagesize");
    page.setCurrentPage(Integer.parseInt(pagesize));
    String name = req.getParameter("uname")==null?"":req.getParameter("uname");
    String username = req.getParameter("uusername")==null?"":req.getParameter("uusername");
    String sex = req.getParameter("usex")==null?"":req.getParameter("usex");
    String rid = req.getParameter("urid")==null?"0":req.getParameter("urid");
    List<User> ulist=userService.getusers(name,username,sex,rid,page);
    page.setContent(ulist);
    int usum=userService.getusersum(name,username,sex,rid);
    page.setRecordTotal(usum);
    List<Role> rlist=userService.getrole();
    req.setAttribute("page",page);
    req.setAttribute("rlist",rlist);
    req.setAttribute("name",name);
    req.setAttribute("username",username);
    req.setAttribute("sex",sex);
    req.setAttribute("rid",rid);
    try {
        req.getRequestDispatcher("/jsp/user.jsp").forward(req,resp);
    } catch (ServletException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
//分页模糊查询DAO层查询各页数据
public List<User> getusers(String name, String username, String sex, String rid, Page page) {
    Connection conn = null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    List<User> list = new ArrayList<>();
    try {
        conn = JDBCUtil.getConnection();
        String sql = "select u.*,r.id rid,r.name rname from user u left join user_role ur on u.id=ur.uid left join role r on ur.rid=r.id where 1=1";

        if(name!=null && !name.equals("")){
            sql+=" and u.name like '%"+name+"%'";
        }
        if(username!=null && !username.equals("")){
            sql+=" and u.username like '%"+username+"%'";
        }
        if(sex!=null && !sex.equals("")){
            sql+=" and u.sex like '%"+sex+"%'";
        }
        if(!rid.equals("0")){
            sql+=" and r.id="+rid;
        }
        sql+=" limit ?,?";
        ps = conn.prepareStatement(sql);
        ps.setInt(1,(page.getCurrentPage()-1)*page.getPageSize());
        ps.setInt(2,page.getPageSize());
        rs = ps.executeQuery();
        while (rs.next()){
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setUsername(rs.getString("username"));
            user.setPassword(rs.getString("password"));
            user.setSex(rs.getString("sex"));
            user.setAge(rs.getInt("age"));
            user.setHobby(rs.getString("hobby"));
            Role role = new Role();
            role.setId(rs.getInt("rid"));
            role.setName(rs.getString("rname"));
            user.setRole(role);
            list.add(user);
        }
    }  catch (SQLException e) {
        e.printStackTrace();
    }finally {
        //关流
        JDBCUtil.close(conn,ps,rs);
    }
    return list;
}
//分页模糊查询DAO层查询符合条件数
public int getusersum(String name, String username, String sex, String rid) {
    Connection conn = null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    List<User> list = new ArrayList<>();
    try {
        conn = JDBCUtil.getConnection();
        String sql = "select count(*) usum from user u left join user_role ur on u.id=ur.uid left join role r on ur.rid=r.id where 1=1";

        if(name!=null && !name.equals("")){
            sql+=" and u.name like '%"+name+"%'";
        }
        if(username!=null && !username.equals("")){
            sql+=" and u.username like '%"+username+"%'";
        }
        if(sex!=null && !sex.equals("")){
            sql+=" and u.sex like '%"+sex+"%'";
        }
        if(!rid.equals("0")){
            sql+=" and r.id="+rid;
        }
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        while (rs.next()){
           return rs.getInt("usum");
        }
    }  catch (SQLException e) {
        e.printStackTrace();
    }finally {
        //关流
        JDBCUtil.close(conn,ps,rs);
    }
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis-Plus是一个集成了很多方便开发功能的MyBatis增强工具包,其中包括分页查询功能。下面是一个MyBatis-Plus分页查询的代码示例: 首先,在Mapper层中编写一个查询方法,使用MyBatis-Plus提供的Page对象来实现分页查询: ```java public interface UserMapper extends BaseMapper<User> { /** * 根据用户名模糊查询分页返回结果 * * @param page 分页参数 * @param userName 用户名模糊查询条件 */ IPage<User> selectUserPage(Page<?> page, String userName); } ``` 然后,在Service层中调用Mapper层的查询方法,传入分页参数和查询条件即可实现分页查询: ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public IPage<User> selectUserPage(int pageNum, int pageSize, String userName) { Page<User> page = new Page<>(pageNum, pageSize); return baseMapper.selectUserPage(page, userName); } } ``` 最后,在Controller层中接收前端传入的分页参数和查询条件,并将查询结果返回给前端: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public JsonResult listUsers(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize, @RequestParam(required = false) String userName) { IPage<User> userList = userService.selectUserPage(pageNum, pageSize, userName); return JsonResult.success(userList); } } ``` 通过以上三个步骤,我们就实现了使用MyBatis-Plus进行分页查询的功能。需要注意的是,在前端传入的pageNum默认值设为1,pageSize默认值设为10,即每页显示10条数据;同时,我们使用了自定义的JsonResult类来封装接口返回结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张同学(恩师白云)

感谢您的打赏,我们一起进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值