這篇文章主要介紹如何實現按條件查詢分頁的。
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>
可能有些地方描述的不清楚,留下你的疑問我們一起討論。