18 综合练习

目录

验证码必须放到session中

快速封装参数为对象

用户登录成功之后,需要使用重定向来进行跳转,不能使用转发跳转

没有在request中存储数据,跳转时就应该使用重定向

数据库中,如果主键是自增长的,在插入数据时,主键的位置填入null即可。

阻止表单提交注意事项

分页

分页好处

输入

输出

分页查询sql语句

PageBean

概念

成员变量

jdbcTemplate查询语句分类

多条件组合查询

sql语句拼接技巧


  1. 验证码必须放到session中

    1. 不能放到request中,因为请求验证码和请求页面是两次请求
  2. 快速封装参数为对象

    1. request.setCharacterEncoding("utf-8");
      Map<String, String[]> map = request.getParameterMap();
      User user = new User();
      try {
          BeanUtils.populate(user,map);
      } catch (IllegalAccessException e) {
          e.printStackTrace();
      } catch (InvocationTargetException e) {
          e.printStackTrace();
      }request.setCharacterEncoding("utf-8");
      Map<String, String[]> map = request.getParameterMap();
      User user = new User();
      try {
          BeanUtils.populate(user,map);
      } catch (IllegalAccessException e) {
          e.printStackTrace();
      } catch (InvocationTargetException e) {
          e.printStackTrace();
      }

       

  3. 用户登录成功之后,需要使用重定向来进行跳转,不能使用转发跳转

    1. 暂时不知道为什么,就先记住好了
  4. 没有在request中存储数据,跳转时就应该使用重定向

  5. 数据库中,如果主键是自增长的,在插入数据时,主键的位置填入null即可。

  6. 阻止表单提交注意事项

    1. onsubmit属性要写在form标签上
    2. οnsubmit="return checkSubmit()"
      1. 需要写return
  7. 分页

    1. 分页好处

      1. 减轻服务器内存开销
    2. 输入

      1. currentPage
        1. 当前页面号
      2. rows
        1. 一次查询的记录数
    3. 输出

      1. pageBean对象
    4. 分页查询sql语句

      1. totalCount = select count(id) from user
      2. list = select * from user limit ? , ?
        1. ?:起始查询的位置
        2. ?:一次查询的数量
  8. PageBean

    1. 概念

      1. 用来封装分页所需要的数据
    2. 成员变量

      1. int currentPage
      2. int rows
      3. List<T> list
        1. 需要使用范型,这样可以兼容数据库中不同的表
      4. int totalCount
      5. int total page
  9. jdbcTemplate查询语句分类

    1. List<User> users = jdbcTemplate.query(sql , new BeanPropertyRowMapper<User>(User.calss))
      1. 查询结果有多条
      2. 每条记录都封装到user对象中,然后再存到list集合中
    2. User user = jdbcTemplate.queryForObject(sql , new BeanPropertyRowMapper<User>(User.class) , username , password)
      1. 查询结果有一条
      2. 查询结果封装到user对象中
    3. int totalCount = jdbcTemplateForObject(sql , Integer.class)
      1. 查询结果为表中记录条数
  10. 多条件组合查询

    1. sql语句拼接技巧

      1. sql = "select * from user where 1 =1 "
      2. sql.append(" and key like %value% ")
    2. public List<User> findUserByPage(int start, int rows,Map<String, String[]> parameterMap) {
          //创建SQL语句的基础
          StringBuilder sql = new StringBuilder("select * from user where 1=1 ");
          Set<String> keySet = parameterMap.keySet();
          ArrayList<Object> values = new ArrayList<>();//用来存储map中的值
          for (String key : keySet) {
              if ("currentPage".equals(key) || "rows".equals(key)) {//把无关的参数去掉
                  continue;
              }
              sql.append(" and " + key + " like ? ");
              values.add("%"+parameterMap.get(key)[0]+"%");//把参数的值也存起来
          }
          sql.append(" limit ? , ? ");
          values.add(start);
          values.add(rows);
          //query方法中接受sql语句的使用的可变参数,所以可以将arrayList转化为数组传进去
          List<User> users = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<User>(User.class), values.toArray());
          return users;
      }

       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值