用戶模塊 之 根據條件查詢用戶

實現用戶顯示的狀態以及查看頁面的後續功能

 

 

初始時數據庫用戶的狀態爲:java

 

初始時用戶列表頁面的顯示:sql

 

 經過代碼進行動態顯示的效果圖:數據庫

進行修改數據庫的狀態:session

顯示出來的效果:jsp

 

 

 

只需在user_list.jsp找到狀態的那一列進行一個判斷便可,將其代碼修改成:測試

<s:if test="#user.state==1">
                            <td class="td-status">
                                <span class="layui-btn layui-btn-normal layui-btn-mini">已啓用</span>
                            </td>
                        </s:if>

                        <s:else>
                            <td class="td-status">
                                <span class="layui-btn layui-btn-danger layui-btn-mini"> 未啓用 </span>
                            </td>
                        </s:else>

接下來須要進行實現的功能有ui

一、停用spa

二、編輯3d

三、修改code

四、查詢

五、添加

六、批量刪除

 

 

 

分析根據條件查詢用戶

能夠將上面的功能分爲兩個模塊:

一、查詢模塊

二、增刪改

須要在數據庫中添加一個字段createtime

 

 在user實體中進行添加:

private String createtime;//經過添加該字段方便進行查詢

 須要用到的流程圖:

 

三個參數,分別是頁面搜索部分start表示開始日期 end標識結束日期 username表示用戶名,在本次的根據條件查詢須要訪問二次數據庫,一次是數目,一次是list

 

在數據庫中進行測試一下:

 

 

 加入limit表示的是分頁,須要使用到pageBean

 

書寫根據條件查詢

 

在user-list.jsp中加入搜索表單的action中加入:

 

 

<form class="layui-form layui-col-md12 x-so" action="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition">
           
                <input class="layui-input" placeholder="開始日" name="start" id="start" ">
                <input class="layui-input" placeholder="截止日" name="end" id="end"">
                <input type="text" name="username" placeholder="請輸入用戶名" autocomplete="off" class="layui-input"">
                <button class="layui-btn" lay-submit="" lay-filter="sreach">
                    <i class="layui-icon">&#xe615;</i>
                </button>
            </form>

 

在User_Action.java中寫入getPageBeanByCondition方法,再其中封裝pageBean:

 

//經過條件獲得pageBean
    public String getPageBeanByCondition() throws Exception {
        
        //若是用戶傳遞的start爲空,那麼咱們將時間設置爲0001-01-01
        if(start.isEmpty())
        {
            start="0001-01-01";
        }
        //若是用戶傳遞的end爲空,那麼咱們將時間設置爲9999-12-31
        if(end.isEmpty())
        {
            end="9999-12-31";
        }
        //username爲空的話,hibername能夠幫咱們解決問題
        
        PageBean userPageBean = userService.getuserPageBeanByCondition(currentPage,start,end,user.getUsername());
        
        //進行對數據的回顯,回顯的時候須要在user-list.jsp獲取
        ActionContext.getContext().put("start", start);
        ActionContext.getContext().put("end", end);
        ActionContext.getContext().put("username", user.getUsername());
        
        ActionContext.getContext().put("userPageBean", userPageBean);
        
        return "userList";
    }

 

傳遞三個參數給userService.java

public PageBean getuserPageBeanByCondition(Integer currentPage, String start, String end, String username, ) {
        
        //獲得符合條件的用戶數目
        Integer totalCount = userDao.getAllUserByCondition(start,end,username);
        PageBean pageBean = new PageBean(currentPage, 6, totalCount);//6表示頁面顯示的數量
        //todo 根據條件獲得list並封裝list
        List<User> list = userDao.getPageBeanListByCondition(pageBean,start,end,username);
        pageBean.setList(list);
        return pageBean;
    }

 

在userDao中寫入sql語句:

//一、2經過開始日期與結束日期還有用戶名條件進行查詢
  //1
    public Integer getAllUserByCondition(String start, String end, String username) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        
        String sql = "select count(*) from user where createtime > ? and createtime < ? and username like ?;           
        
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, start);
        query.setParameter(2, end);
        query.setParameter(3, "%"+username+"%");
        
        BigInteger result = (BigInteger) query.uniqueResult();
        
        return result.intValue();
    }
   //2
    public List<User> getPageBeanListByCondition(PageBean pageBean, String start, String end, String username) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        //須要三個條件
        String sql = "select * from user where createtime > ? and createtime < ? and username like ?  limit ?,?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(User.class);
        query.setParameter(1, start);
        query.setParameter(2, end);
        query.setParameter(3, "%"+username+"%");
        
        query.setParameter(4, pageBean.getStart());
        query.setParameter(5, pageBean.getPageSize());
        
        List list = query.list();
        
        return list;
    }

 

 

 

爲防止在進行查詢時候點擊下方分頁的上一頁以及其它查詢全部,在user-list.jsp中進行參數的拼接:

<div class="page">
            <div>
                <a class="prev" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage-1"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/>">&lt;&lt;</a>
                <s:if test="#userPageBean.currentPage-2>0">
                    <a class="num" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage-2"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/>">
                        <s:property value="#userPageBean.currentPage-2" />
                    </a>
                </s:if>
                <s:if test="#userPageBean.currentPage-1>0">
                    <a class="num" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage-1"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/> ">
                        <s:property value="#userPageBean.currentPage-1" />
                    </a>
                </s:if>
                <span class="current">
                    <s:property value="#userPageBean.currentPage" />
                </span>
                <s:if test="#userPageBean.currentPage+1<=#userPageBean.totalPage">
                    <a class="num" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage+1"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/> ">
                        <s:property value="#userPageBean.currentPage+1" />
                    </a>
                </s:if>
                <s:if test="#userPageBean.currentPage+2<=#userPageBean.totalPage">
                    <a class="num" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage+2"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/> ">
                        <s:property value="#userPageBean.currentPage+2" />
                    </a>
                </s:if>
                <a class="num" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.totalPage"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/> ">尾頁</a>
                <a class="next" href="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition?currentPage=<s:property value="#userPageBean.currentPage+1"/>&start=<s:property value="start"/>&end=<s:property value="end"/>&username=<s:property value="username"/> ">&gt;&gt;</a>
            </div>
        </div>

 

進行對輸入的三個參數回顯到輸入框中

 

 修改user.jsp中該部分的代碼:

<form class="layui-form layui-col-md12 x-so" action="${pageContext.request.contextPath }/UserAction_getPageBeanByCondition">
                <input type="hidden" name="isDelete" value="<s:property value="isDelete"/>">
                <input class="layui-input" placeholder="開始日" name="start" id="start" value="<s:property value="start"/>">
                <input class="layui-input" placeholder="截止日" name="end" id="end" value="<s:property value="end"/>">
                <input type="text" name="username" placeholder="請輸入用戶名" autocomplete="off" class="layui-input" value="<s:property value="username"/>">
                <button class="layui-btn" lay-submit="" lay-filter="sreach">
                    <i class="layui-icon">&#xe615;</i>
                </button>
            </form>

 

最終效果:

相關文章
相關標籤/搜索