三个案例:删除所选联系人、条件查询、分页查询

沙海 2018年11月20日14:21:43Java HTML5 MySql评论310字数 1829阅读6分5秒阅读模式

案例一 删除多个所选联系人

三个案例:删除所选联系人、条件查询、分页查询文章源自JAVA秀-https://www.javaxiu.com/568.html

需求

在list.jsp上为每一个联系人添加一个复选框,在页面上添加一个"删除选中"按钮
然后勾选需要删除的联系人,点击按钮,删除选中联系人

技术分析

前台实现文章源自JAVA秀-https://www.javaxiu.com/568.html

复选框的全选和全不选

后台实现文章源自JAVA秀-https://www.javaxiu.com/568.html

将点中的用户的id传递给后台,后台根据传递的id去数据库进行删除
问题1:页面的数据如何传递给servlet?
1 超连接  <a href="servlet?username=xxx&password=xx&id=xxx">
2 表单提交 表单只要提交 表单中的input标签的内容就会以 name=value的形式进行传递

案例二 根据条件做联系人的查询(检索查询)

三个案例:删除所选联系人、条件查询、分页查询文章源自JAVA秀-https://www.javaxiu.com/568.html

需求

在页面上添加两个文本框,人员名称和人员QQ,再添加一个查询按钮,
点击查询按钮,去数据库中查询满足条件的人员信息,然后将查询的数据显示在展示页面上

技术分析

条件查询语句文章源自JAVA秀-https://www.javaxiu.com/568.html

1 如果人员名称和人员qq都没填 是全部查询数据展示
2 如果人员名称填了人员qq没填 是按照人员名称查询数据展示
3 如果人员qq填了人员名称没填 是按照人员qq查询数据展示
4 如果人员名称和人员qq都填了 是既按照人员名称也按照人员qq查询数据展示

重点关注dao:
IF(NAME==""&&qq==""){
   SQL=SELECT * FROM contact;     
}ELSE IF(NAME!="" && qq==""){
   SQL=SELECT * FROM contact WHERE NAME LIKE ?;     
}ELSE IF(NAME=="" && qq!="")
{
   SQL=SELECT * FROM contact WHERE qq LIKE ?;                 
}ELSE{
  SQL=SELECT * FROM contact WHERE qq LIKE ? AND NAME LIKE ?;        
}
LIST<Contact>==list.jsp
此种方式虽然逻辑很好,但是过于麻烦,不推荐
企业开发如何去优化该方式的语法呢:sql语句的拼接

案例三 分页展示数据

需求

若联系人比较多的时候,在展示页面上显示的数据特别多,导致页面特别长.
为了给用户更好的体验我们需要进行分页显示联系人信息.
6条数据:每页显示2条 一共3页

技术分析:分页

分页的作用:为了给用户更好的阅读体验文章源自JAVA秀-https://www.javaxiu.com/568.html

分页的分类:物理分页 逻辑分页文章源自JAVA秀-https://www.javaxiu.com/568.html

物理分页:企业
特点:每次点击下一页,每次就去数据库里面查询当前页的数据
优点:能够保证数据都是最新的
缺点:频繁的和数据库进行交互会带来效率低下的问题 (redis)
逻辑分页:
特点:一次性将数据全部查询出来,放在一个容器中
      当每次点击下一页,不是去数据库获取,而是去容器中获取
优点:不会频繁的和数据库进行交互
缺点:不能保证数据的时时更新

Mysql提供的分页关键字:limit文章源自JAVA秀-https://www.javaxiu.com/568.html

格式:select * from 表 limit a,b
a:起始数据 从哪开始
b:查多少条数据
例如:每页显示2条记录第一页:   select * from contact limit 0,2;
每页显示2条记录第二页:         select * from contact limit 2,2;
每页显示2条记录第三页:         select * from contact limit 4,2;
每页显示2条记录第四页:         select * from contact limit 6,2;
每页显示2条记录第五页:         select * from contact limit 8,2;

格式:select * from 表 limit 起始数据,要查的条数(每页显示的条数)
每页显示的条数固定:2条
起始数据:不固定
起始数据的规律(记住):(当前页-1)*每页显示的条数
1  0
2  2
3  4
4  6
5  8
6  10

分页上集文章源自JAVA秀-https://www.javaxiu.com/568.html

终极目标:将当前页的2条数据查询出来展示
页面上要展示的数据(list)
        List=Select * from 表 limit ?,?;
参数(2个):
1 每页显示的条数(pageSize)
        固定
2 需要当前页(pageNumber)
        因为根据当前页可以算出起始数据 (pageNumber-1)*pageSize         
入口:第一页

分页下集文章源自JAVA秀-https://www.javaxiu.com/568.html

需要在页面定义【首页】 【上一页】 【下一页】 【尾页】 
参数:
当前页 pageNumber  传多少代表多少
总条数 totalCount
           select count(*) from contact;
总页数 totalPage  10/2=5 11/2=5+1
           if(totalCount%pageSize==0){
             totalPage=totalCount/pageSize
           } else{
             totalPage=totalCount/pageSize+1
           }
文章源自JAVA秀-https://www.javaxiu.com/568.html
继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定