关于jeesite分页和点击列自动排序
特别注意次分页/点击行排序方法仅用于 jeesite项目框架内:
一般思路:{假设实体类:DemoEntity 业务层:DemoService 引用的业务层:QuoteService 数据层:DemoDao 方法传的参数:(demoEntity,request,response) }
现将要的数据通过List或Map进行封装,再将封装的数据进行分页
Controller:
1,Controller:
2 3 @Controller 4 public class DemoController{ 5 @Autowired 6 private DemoService demoService; 7 @Autowired 8 priavte QuoteService quoteService; 9 10 @reponseBody 11 @requestMapping(value="/listDate",method=RequestMethod.POST) 12 public Page<Demo> selectAllListDate(String param,HttpServletRequest request,HttpServletResponse response){ 13 //将request,response里的参数(pageNo pageSize pageCount) 14 Page<Demo> page=new Demo(request,response); 15 //新建Demo容器 16 Demo demo=new Demo(); 17 //将页面信息封装到实体类中 18 demo.setPage(page); 19 //将参数封装到实体类中,尤其是传递多个参数时(便于免于校验参数是否为空) 20 demo.setParam(param); 21 Page<Demo> resultPages = demoService.getListDate(demo); 22 result resultPages; 23 24 } 26 }
2,Service:
@Service public class DemoService extends CrudService<CountCloseLockDao,CountCloseLockEntity>{ @Autowired private DemoDao demoDao; public getListDate(Demo demo){ //获取页面 @SuppressWarnings("unchecked") Page<Demo> page = (Page<Demo>)demo.getPage(); //获取到设备表的总条数 int pageCount =demoDao.countDemoTimes(demo); //根据管辖区域字符串来过滤查询出的数据,再封装在数据里(特别注意:jeesite会自动在dao层识别page,自动进行分页)
//对分页也可以用sql里自定义Limit来分页(sql代码见dao.xml)
//list集合封装了查询数据 List<Demo> resultList = demoDao.findListByParams(demo,page); page.setCount(pageCount); page.setList(resultList); result page; } }
3, Dao:
@MyBatis public interface DemoDao extends CrudDao<Demo> { //分数数据 注意当参数包含page时,可以省去dao.xml的分页,jeesite会自动进行分页 Page<Demo> findListParams(@Param("demo")Demo demo,@Param("page")Page<Demo> page);
//统计总次数 int countDemoTimes(Demo demo);
}
4,dao.xml
<!-- 分页查询数据 --> <select id="findListByParams" resultType="Demo"> SELECT a.* FROM table_a a <where> <if test="demo.param!= null and demo.param.trim() != ''"> <!--模糊查询--> and a.param like '%${demo.param}%' </if> <if test="demo.code != null and demo.code.trim() != ''"> and a.code like '%${demo.code}%' </if> </where> <if test="demo.page != null and demo.page.orderBy != null and demo.page.orderBy != ''"> ORDER BY ${demo.page.orderBy} </if> <!--手动添加分页 <if test="demo.page != null and demo.page.pageNo != null and demo.page.pageNo != '' and demo.page.pageSize != null and demo.page.pageSize != ''"> limit ${(demo.page.pageNo-1)*demo.page.pageSize},${demo.page.pageSize} </if> -->
</select>
<!-- 获取总条数 -->
<select id="countDemokTimes" resultType="java.lang.Integer">
select count(1) from table_a a
<where>
<!--显示总条数 注意包含模糊查询时显示的总条数的情况-->
<if test="demo.param !=null and demo.param.trim() != ''">
a.param like '%${demo.param}$'
</if>
</where>
</select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现