ssm框架和layui實現按條件分頁查詢數據記錄

這篇文章主要介紹如何實現按條件查詢分頁的。

ssm配置文件詳情看我之前的文章有介紹。

數據庫表:

數據就隨便填幾個吧。

前端按條件分頁代碼如下:

//按條件查詢表格數據
            $("#btnGet").click(function() {
                //拿到條件
                var uname = $("#txtUserName").val();
                var lname = $("#txtLoginName").val();
                //按照where條件重新渲染數據
                table.reload('dataTbl', {

                    page:{curr:1},//重新定位到第一頁
                    where:{//查詢的條件,layui會自動發送參數到後端

                        userName: uname,//參數名:值  key:value的形式
                        loginName: lname
                    },
                    url:"/demo/sysUser/getSysUserPageBean.do",//請求的地址
                    method:"post"//發送請求的方式
                });
            });

controller:

 /**
     * 分頁查詢.
     * @param sysUserBean 分頁的實體.
     * @return 數據表格所需要的數據.
     */
    @RequestMapping("/getSysUserPageBean")
    @ResponseBody
    public Object getSysUserPageBean(SysUserBean sysUserBean) {

        return sysUserService.getSysUserBeanByPage(sysUserBean);
    }

service:

接口:
/**
     * 根據條件獲取sysUser記錄集合.
     * @param sysUserBean 分頁查詢的實體.
     * @return table數據表格需要的數據.
     */
    Object getSysUserBeanByPage(SysUserBean sysUserBean);

實現類: 
/** {@inheritDoc} */
    @Override
    public Object getSysUserBeanByPage(SysUserBean sysUserBean) {

        HashMap<String, Object> map = new HashMap<String, Object>();//layui數據表格需要的數據接口格式。
        Integer currentPage = sysUserBean.getPage();
        Integer limit = sysUserBean.getLimit();
        Integer count = getCountByUserNameAndLoginName(sysUserBean);//查詢到符合條件的記錄數量
        sysUserBean.setPage((currentPage - 1) * limit);
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", count);
        map.put("data", sysUserDao.getSysUserBeanByPage(sysUserBean));
        map.put("currentPage", currentPage);
        map.put("pageSize", limit);

        return map;
    }



    /**
     * 查詢所有符合條件記錄數量.
     * @param sysUserBean 條件.
     * @return 符合查詢條件記錄的數量.
     */
    int getSysUserCount(SysUserBean sysUserBean);
  /**{@inheritDoc} */
    @Override
    public int getCountByUserNameAndLoginName(SysUserBean sysUserBean) {

        return sysUserDao.getSysUserCount(sysUserBean);
    }


dao:

dao: 
   /**
     * 分頁查詢.
     * @param sysUserBean 條件.
     * @return 符合查詢條件的sysUser記錄.
     */
    List<SysUserBean> getSysUserBeanByPage(SysUserBean sysUserBean);

    /**
     * 查詢所有符合條件記錄數量.
     * @param sysUserBean 條件.
     * @return 符合查詢條件記錄的數量.
     */
    int getSysUserCount(SysUserBean sysUserBean);


映射:
<select id = "getSysUserBeanByPage" parameterType = "com.doart.bean.SysUserBean" resultType = "com.doart.bean.SysUserBean">
        select id,user_name,login_name,email,telephone, phone
        from sys_user
        where true
        <if test = "userName != null and userName != ''">
            and user_name like "%"#{userName}"%"
        </if>
        <if test = "loginName !=null and loginName != ''">
            and login_name like "%"#{loginName}"%"
        </if>
        and del_flag=0
        <if test = "page !=null and limit != null">
            limit #{page}, #{limit}
        </if>
    </select>
 <select id ="getSysUserCount" resultType = "int" parameterType = "com.doart.bean.SysUserBean">
        select count(*) from sys_user where true
        <if test = "userName != null and userName != ''">
            and user_Name like "%"#{userName}"%"
        </if>
        <if test = "loginName != null and loginName != ''">
            and login_Name like "%"#{loginName}"%"
        </if>
        and del_flag = 0
    </select>

可能有些地方描述的不清楚,留下你的疑問我們一起討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章