crm-day04 分页查询市场活动,刷新市场活动列表

news2024/11/15 19:34:13

分页插件

分页这个组件前端要写也很麻烦,而且与业务逻辑代码无关,因此我们引入一个分页查询的插件。
进行jsp测试
三大步骤:
1、引入相关的包
2、创建容器来保存插件的运行结果
容器是<input type=text/>或者div
3、容器加载完成后,调用容器的工具函数。

注意刷新市场列表有以下几种情况
1、添加市场活动,显示第一页数据,按照创建时间降序排列
2、当跳转到活动页面的时候,无条件显示所有数据的第一页
3、模糊查询符合条件数据的第一页。
4、用户切换也换和每页显示条数,刷新活动列表进行显示
5、删除市场活动,显示第一条数据,每页显示条数不变。

由此可见,查询+刷新市场活动这个功能的代码会在很多场景下都会出现,因此我们将这个功能代码封装成函数。

函数:如果一段用来完成特定功能的代码到处出现,可以封装成函数。
函数的参数:在编写函数的过程中,如果有一个或者多个数据无法确定,则可以把这些数据定义成函数的参数。

由上可知,变换的有页号和每页显示条数,因此这两个作为函数的参数。

流程图:
请添加图片描述

Controller,service,mapper语句的参数怎么选取类型+封装?

1、设置一个pojo类,这个pojo类一般是数据表中的pojo类
2、设置一个map集合,这个map集合中封装的一般是pojo类+多余参数。如Controller接收很多参数,然后封装成map集合,传到service层中。
3、个别形参封装成map类。
4、单一参数原始形式,如传进来id或者name。
5、无参。

重点:编写sql语句
活动列表需要的数据是一个活动列表List<Activity>,为什么活动列表显示的只有活动名称,所有者,开始日期,结束日期,我们却需要的是一个活动列表呢?
为了防止以后显示的数据增增减减,这样后端的代码就无需改动了,因为活动的信息我们都有,只需要显示即可。
重点:sql语句的分页查询
先排序再分页。
我们要整合不同业务下的分页查询,需要用到动态sql

<select id="selectActivityByConditionForPages" parameterType="map" resultMap="BaseResultMap">
    select a.id,u1.name as owner,a.name,a.start_date,a.end_date,a.cost,a.description,a.create_time,
    u2.name as create_by,a.edit_time,u3.name as edit_by
    from tbl_activity a
    join tbl_user u1 on a.owner=u1.id
    join tbl_user u2 on a.create_by=u2.id
    left join tbl_user u3 on a.edit_by=u3.id
    <where>
      <if test="name!=null and name!=''">
        and a.name like '%' #{name} '%'
      </if>
      <if test="owner!=null and owner!=''">
        and u1.name like '%' #{owner} '%'
      </if>
      <if test="startDate!=null and startDate!=''">
        and a.start_date&gt;=#{startDate}
      </if>
      <if test="endDate!=null and endDate!=''">
        and a.end_date&lt;=#{endDate}
      </if>
    </where>
    order by a.create_time desc
    limit #{beginNo},#{pageSize}
  </select>

细节:
1、查询的活动列表虽然只有显示的那几条但可能以后会有所变动,因此我们可以查出所有数据。注意,查出的显示的所有者是用户的名称,但数据库存的是用户的id,因此需要连表查询,并作为owner这个字段传给前端,对应给map,map会通过ResultMap找到对应的owner值的。为什么一定要起别名呢?
因为在resultmap找对应的字段的时候,如果不起别名,此时查询语句中就会有两个name,一个是u1.name,一个是a.name,那么必然会引起其中的一个name值为空,因此我们需要起别名,让这个u1.name占据其他的字段名,其他的字段名必须是与之对应外键相关的字段名
2、因为需要实现共同的查询语句,我们分页查询的或者第一次进入主页面的时候没有模糊查询,因此我们的where语句内的内容是动态的。
需要判断模糊查询是否传过来有值,test语句中的字段name,owner,startDate,endDate是传过来map集合中的key值,根据key值看value是否为空或者空字符串来判断是否写入if动态sql中的语句。
模糊查询 like '%' #{key} '%'
3、先排序再分页。
页号是beginNo=(pageNo-1)*pageSize
pageNo代表第几页,beginNo代表第几页的第一条数据的,pageSize代表一页的页数

limit #{beginNo},#{pageSize}

4、注意在起别名的时候如果不注意可能会出现空指针异常,起得别名不能加前缀。必须是map中的字段名。
如 edit_by 不能写成 a.edit_by
要不然会有歧义,机器无法识别,报空指针异常
还有在内连接的时候on后面的条件必须是主表在前,从表在后。

前端动态显示数据-响应服务器端返回的数据

在html中取动态的显示数据:
1、收集数据
2、ajax请求成功后获取服务器返回的数据,响应到浏览器上,怎么显示?
通过选择器.text/html()进行显示
text只能显示文本,html显示标签页面是覆盖显示,append也可以但是是追加显示

页面遍历函数有两种方法,一种是 jstl标签库的foreach标签,这种遍历是利用el表达式取作用域中的数据。
第二种是js变量的用jquery的each函数
$.each(遍历对象,function(遍历下标index,循环变量obj){
"id="this.value; });

刷新列表后按钮全部取消

已知按钮是类型是checkbox,是多选,他的checked值默认是true,因此这个属性值为true或者false,我们要将按钮全部取消那么我们必须设置按钮的值为false,这样就可以取消了

$("#checkAll").prop("checked",false);
$("#tbody input[type='checkbox']").prop("checked",false);

想知道为啥这样写嘛?请听下回详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/458781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫猫与主人

时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 对猫猫按照友善值进行排序 对主人按照期望友善值进行排序 就可以找到能收养猫猫的主人 对主人的友善值取一个max最后跟猫猫的期望友…

用大佬开发的模板做了“智慧水务”,终于可以和老板谈加薪喽!

为什么各个行业要进行数字化转型&#xff1f; 其实很好理解&#xff0c;这其中很大一部分属于传统行业&#xff0c;以往运营方式较为粗放&#xff0c;信息标准化程度偏低&#xff0c;但同时也意味着数字化的历史包袱轻&#xff0c;此时跟上潮流进行数字化转型&#xff0c;有利于…

美颜SDK的性能测试和优化方案

美颜SDK作为美颜相机、短视频等应用的核心技术之一&#xff0c;对于提升用户体验和增加应用商业价值起到了至关重要的作用。然而&#xff0c;如何对美颜SDK进行性能测试和优化&#xff0c;成为了广大应用开发者们所面临的一大难题。很多开发者也曾经向小编提起过应该如何着手优…

nodejs+python+php+springboot+vue 校园安全车辆人员出入安全管理系统

拟开发的校园安全管理系统通过测试,确保在最大负载的情况下稳定运转,各个模块工作正常,具有较高的可用性。系统整体界面简洁美观,用户使用简单,满足用户需要。在因特网发展迅猛的当今社会,校园安全管理系统必然会成为在数字信息化建设的一个重要方面。 本文阐述了开发的校园安全…

马斯克要告微软 拒绝AI训练“白嫖”数据

“现在是诉讼时间。”4月20日&#xff0c;推特被微软踢出其数字营销平台后&#xff0c;新掌门人马斯克立马发推回击称&#xff0c;微软用推特的数据做“非法训练”。这一怼&#xff0c;直接揭开了AI大模型开发商与数据源的利益之争。 此前&#xff0c;在线社区论坛Reddit与程序…

黑马redis实战篇-商铺缓存

目录 五、实战篇-商户查询缓存 5.1 什么是缓存 5.2 添加Redis缓存 1、不添加redis时&#xff0c;数据查询的作用模型&#xff1a; 2、添加redis时&#xff0c;数据查询的作用模型&#xff1a; 3、业务流程图&#xff1a;​编辑 4、代码实现 5、练习题 5.3 缓存更新策略…

【Android FrameWork (三)】- SystemServer

文章目录 知识回顾启动第一个流程initZygote的流程 前言源码分析1.system_server2.SystemServer.main3,startBootstrapServices4,startService 拓展知识LoadApkcontext 对于Android context 大家是怎么理解的&#xff1f;LocalServices.java: addServece方法中 ArrayMap和HashM…

Matlab 绘制双纵轴三纵轴图

三纵轴图 三坐标的图在前文中有所介绍&#xff1b;这次主要讲绘制双轴。 matlab 绘制三坐标&#xff08;轴&#xff09;图 绘制双纵轴图: yyaxis 简单用法 在MATLAB中&#xff0c;yyaxis可以用于绘制具有两个不同y轴的图形。以下是yyaxis的简单用法&#xff1a; 1.首先&am…

UG NX二次开发(C#)-UIStyler-找不到指定的Dlx文件的错误解决方法

1、项目场景: 在UG NX二次开发过程中,我们为了更好的操作,采用UI Styler设计了软件界面,然后按照UI Styler的编程流程成功的生成了dll,但是在采用Ctrl+U或者用“文件“->“执行”->"NX Open"执行dll时,遇到如下图所示的错误页面,提示内容为:找不到指定…

成就更强大的自己

每一次低谷&#xff0c;都会酝酿向上的力量。 每一次痛苦过后&#xff0c;都会洗涤掉心理深处的灰尘。 人生的路上&#xff0c;坎坷前行&#xff0c;只有保持积极向上的态度&#xff0c;才能把坎坷化为坦途。 走过一段路后&#xff0c;才发现&#xff0c;当内心强大、修养、爱…

Android之 颜色选择器

一&#xff0c;简介 1.1 计算机的颜色通常有两种表示方式&#xff1a; 光源模式RGB(Red红, Green绿, Blue蓝)&#xff0c;数值0-255 印刷模式CMYK(Cyan青, Magenta品红, Yellow黄, Black黑)&#xff0c;数值1-100 任何颜色都是由RGB或CMYK混合出来的&#xff0c;再加上透明度…

2023年产业基金研究报告

第一章 行业概况 1.1 概述 产业基金&#xff0c;又称为产业投资基金&#xff0c;是一种由政府、企业、金融机构等出资设立的&#xff0c;专门用于支持和促进特定产业发展的投资基金。产业基金通常以股权投资和长期投资为主&#xff0c;旨在推动产业结构升级、促进科技创新、提…

算法刷题|139.单词拆分、多重背包

单词拆分 题目&#xff1a;给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 思路&#xff1a;字符串s就是我们的背包…

【移动端网页布局】流式布局案例 ① ( 视口标签设置 | CSS 样式文件设置 | 布局宽度设置 | 设置最大宽度 | 设置最小宽度 )

文章目录 一、视口标签设置二、CSS 样式文件设置三、布局宽度设置1、设置布局宽度2、设置布局最大宽度3、设置布局最小宽度4、查看网页最大最小宽度5、布局宽度设置 四、代码示例1、主界面标签2、CSS 布局设置 一、视口标签设置 参考 【移动端网页布局】移动端网页布局基础概念…

打造卓越游戏 | 2023 Google 游戏开发者峰会

一款游戏从初始构想的开发到辉煌赛季的策划&#xff0c;开发者们每时每刻都在倾注心血潜心钻研&#xff0c;Google 也致力于在整个开发和发布生命周期中为您提供帮助。我们很高兴能在今年如约而至的 Google 游戏开发者峰会中与您分享诸多更新&#xff0c;展示我们为助力您打造精…

JavaScript常用方法整理

文章目录 前言1.栈方法&#xff1a;push()、pop()2.队列方法&#xff1a;unshift()、shift()3.indexof()、lastIndexOf()、includes()4.操作方法&#xff1a;concat()、slice()、splice()5.Array.isArray()6.排序方法:sort()、reverse()7.转换方法&#xff1a;toString()、join…

input 元素 change 事件失效,失去焦点的时候才执行?什么原因导致?如何正确使用?

具体问题如标题所示&#xff0c;不再过多水字数&#xff0c;请看下面的代码&#xff1a; <input :class"[custom-form-item-input, (isFocusUserName && !userName) ? custom-form-item-input-err-active : ]"autoCompletenew-password type"text&…

带着疑问学C语言-C语言常用变量

目录 目录 一、声明变量和定义变量的区别是什么&#xff1f; 二、什么常量&#xff0c;如何区分常量和变量&#xff1f; 三、各数据类型所占的内存是多少&#xff1f; 四、字符与字符串的差别有哪些&#xff1f; 五、为什么会发生数据溢出&#xff0c;如何避免数据溢出&am…

springboot整合juit和springboot整合mybatis和springboot整合ssm

springboot整合juit 先看一眼包路径&#xff0c;发现main程序的路径和测试类的路径是一样的 启用新注解&#xff1a;SpringBootTest代替了之前sm整合juit时的 RunWith(SpringJUnit4ClassRunner.class) //spring配置类 ContextConfiguration(classes config.class)新的如此…

数字北京城,航行在联通2000M的“大运河”

前故宫博物院院长单霁翔&#xff0c;在《大运河漂来紫禁城》一书中提到过&#xff0c;紫禁城里的石材、木材&#xff0c;甚至每一块砖&#xff0c;都是通过大运河&#xff0c;跋山涉水来到北京的。某种程度上说&#xff0c;北京城的繁荣与这条纵跨南北的“中华大动脉”密不可分…