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

  • A+
所属分类:Java HTML5 MySql

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

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

需求

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

技术分析

前台实现

复选框的全选和全不选

后台实现

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

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

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

需求

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

技术分析

条件查询语句

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页

技术分析:分页

分页的作用:为了给用户更好的阅读体验

分页的分类:物理分页 逻辑分页

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

Mysql提供的分页关键字:limit

格式: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

分页上集

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

分页下集

需要在页面定义【首页】 【上一页】 【下一页】 【尾页】 
参数:
当前页 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
           }
  • 资源分享QQ群
  • weinxin
  • 官方微信公众号
  • weinxin
沙海
Java图书管理系统
网站https安全证书安装,伪静态配置
C语言项目源码分享
美女讲师教你学C语言

发表评论

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