JAVA 框架 DAY-3

目录

安装lombok依赖

​编辑

Wrapper 子句构造器父类

​编辑

 IPage分页器

Page类

封装

框架-前后端整合 完成用户列表查询

1.环境

2.Entity 实体类

3.Page包 分页查询类

 4.Mapper包 创建接口

 5.Service包 业务逻辑代码

6.Controller包

在UserService接口中定义抽象方法

在UserService接口实现类UserServiceImpl中实现selectPage方法

 在UserController类中定义Page方法

在jsp中创建public目录(放公共目录)

       在public目录中创建PageBar.jsp(可以被复用)

在jsp中创建user子目录(作user模块的jsp)


安装lombok依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

 提供 @Data注解

用于注解实体类 编译时动态添加 setter/getter/toString方法 重写equals 和hashCode方法

 

Wrapper 子句构造器父类

子类 用子类构造对象

1.QueryWrapper<T>      作为where子句的构造器

2.UpdateWrapper<T>    修改set子句的构造器

 

 

 IPage分页器

Page类

 不同数据库的分页SQL语句不一样,需要告诉框架用的是什么数据库

MySQL:limit  ?,?

Oracle:基于rownum做子查询

在启动类中添加 即可告诉MyBatis 使用的是MySQL数据库

封装

 

 

框架-前后端整合 完成用户列表查询

1.环境

创建web目录 安装jsp和jstl依赖(3个)

配置打包web目录/resources目录

配置资源文件

2.Entity 实体类

创建基础类

创建实体类User

3.Page包 分页查询类

 4.Mapper包 创建接口

创建接口UserMapper

 5.Service包 业务逻辑代码

创建接口UserService

创建子包impl

在子包impl中创建实现类UserServiceImpl 实现UserService接口

 

6.Controller包

创建UserController 控制器类

在UserService接口中定义抽象方法

在UserService接口实现类UserServiceImpl中实现selectPage方法

 

 在UserController类中定义Page方法

在jsp中创建public目录(放公共目录)

       在public目录中创建PageBar.jsp(可以被复用)

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="../../jQuery/jquery-3.6.0.min.js"></script>
<script>
    $(function(){
        $('.page-btn').click(function (){
            var current = $(this).data('current'); //用jQuery的data函数获取当前元素身上绑定的数据
            goPage(current);
        })
        // go按钮的click事件
        $("#btn-go").click(function (){
            var current = $('#goPageNo').val().trim() // 获取用户输入的页号,并用trim()去除字符串两端空格
            goPage(current)
        })
        // sizeSelect下拉框change事件
        $('#sizeSelect').change(function (){
            var size = $(this).val();// 获取用户选择的下来选项中的value
            $('#size').val(size);// 更新form表单中的隐藏域size
            var current = $(this).data('current');
            goPage(current);
        })
        // go输入框的键盘up事件, 每次在go输入框的键盘up以后, 校验输入的页号是否正确
        $('#goPageNo').keyup(function (){
            // 检查用户输入的内容, 只能是数字, 不能小于1, 不能大于pages
            var pageNo = $(this).val(); // 获取用户输入的页面
            if(!pageNo){
                return;
            }
            // 用isNaN()函数判断输入的内容是不是一个数字 如果参数是一个数字,返回false, 如果不是数字, 返回true
            if(isNaN(pageNo)){
                $(this).val(''); // 不是数字用把输入框内容置为'', 如何return
                return;
            }
            if(pageNo < 1){ // 如果上面没有resturn说明是数字, 判断是否小于1, 如果小于1就置为1
                $(this).val(1)
                return;
            }
            var pages = $(this).data('pages') // 获取go输入框身上绑定的最大页数
            if(pageNo > pages){ // 判断输入的数字是否>最大页数, 如果大于最大页数, 就置为最大页数
                $(this).val(pages)
            }
        })
        // 所有的分页按钮和go按钮都调用的函数
        function goPage(current){
            var size = $('#size').val();
            var username = $('#username').val(); // 用id选择器去form表单中获取value
            var mobile = $('#mobile').val(); // 用id选择器去form表单中获取value
            var idCode = $('#idCode').val(); // 用id选择器去form表单中获取value
            // 用location.href修改浏览器地址栏实现跳转地址到后的Servlet
            location.href = "/user/page?current=" + current + "&size=" + size
                + "&username=" + username + "&mobile=" + mobile
                + "&idCode=" + idCode;
        }
    })
</script>
<div class="panel-footer" style="display: flex; justify-content: space-between; align-items: center">
  <c:if test="${not empty records}">
    <h5 class="form-inline">
      一共查询到${total}条数据,当前是第${current}/${pages}页
      <select id="sizeSelect" class="form-control" style="width: 100px"
              data-current="${current}">
        <option value="5" ${size==5?'selected':''}>5</option>
        <option value="10" ${size==10?'selected':''}>10</option>
        <option value="15" ${size==15?'selected':''}>15</option>
        <option value="20" ${size==20?'selected':''}>20</option>
        <option value="100" ${size==100?'selected':''}>100</option>
      </select>
    </h5>
    <nav aria-label="Page navigation">
      <ul class="pagination">
        <li>
          <a href="#!" class="page-btn" data-current="${current-1<1?1:current-1}">
            <span aria-hidden="true">&laquo;</span>
          </a>
        </li>
        <c:forEach var="i" step="1"
                   begin="${current-3<1 ? 1:current-3 }"
                   end="${current-1}">
          <li><a href="#!" class="page-btn" data-current="${i}">${i}</a></li>
        </c:forEach>
        <li class="active"><a href="#!" class="page-btn" data-current="${current}">${current}</a></li>
        <c:forEach var="i" step="1"
                   begin="${current+1}"
                   end="${current+3>pages?pages:current+3}">
          <li><a href="#!" class="page-btn" data-current="${i}">${i}</a></li>
        </c:forEach>
        <li>
          <a href='#!' class="page-btn" data-current="${current+1>pages?pages:current+1}">
            <span aria-hidden="true">&raquo;</span>
          </a>
        </li>
        <li class="form-inline">
          <input type="text" data-pages="${pages}" class="form-control" id="goPageNo"
                 style="width: 90px;margin-left: 5px" placeholder="输入页码">
          <button class="btn btn-primary btn-sm" id="btn-go">GO</button>
        </li>
      </ul>
    
    </nav>
  </c:if>
</div>

在jsp中创建user子目录(作user模块的jsp)

        在user目录中创建page.jsp,作具体用户列表的页面设计

        在page.jsp中引入bootstrap.css和jquery.js

底部分页等功能直接调用封装的PageBar

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
  <link rel="stylesheet" href="../../bootstrap-3.4.1/dist/css/bootstrap.css">
  <script src="../../jQuery/jquery-3.6.0.js"></script>
</head>
<body>
<div class="container-fluid">
  <div class="row">
    <div class="col-md-8 col-md-offset-2">
      <div class="panel panel-primary">
        <div class="panel-heading">用户列表</div>
        <div class="panel-body">
          <form action="/user/page" class="form-inline">
            <div class="form-group">
              <label for="username">Username</label>
              <input type="text" class="form-control" id="username" name="username" value="${username}" placeholder="支持模糊查询">
            </div>
            <div class="form-group">
              <label for="mobile">Mobile</label>
              <input type="text" class="form-control" id="mobile" name="mobile" value="${mobile}" placeholder="支持模糊查询">
            </div>
            <div class="form-group">
              <label for="idCode">IdCode</label>
              <input type="text" class="form-control" id="idCode" name="idCode" value="${idCode}" placeholder="支持模糊查询">
            </div>
            <div class="form-group">
              <input type="hidden" id="size" name="size" value="${size}"/>
            </div>
            <button type="submit" class="btn btn-primary">查询</button>
          </form>
          <c:if test="${empty records}">
            <div class="jumbotron" style="text-align: center">暂无数据</div>
          </c:if>
          <c:if test="${not empty records}">
            <table class="table table-striped table-bordered table-hover">
              <thead>
              <th>用户编号</th>
              <th>用户名</th>
              <th>性别</th>
              <th>手机号码</th>
              <th>身份证号码</th>
              </thead>
              <tbody>
              <c:forEach items="${records}" var="user">
                <tr>
                  <td>${user.id}</td>
                  <td>${user.username}</td>
                  <td>${user.sex}</td>
                  <td>${user.mobile}</td>
                  <td>${user.idCode}</td>
                </tr>
              </c:forEach>
              </tbody>
            </table>
          </c:if>
        </div>
        <%@include file="../public/PageBar.jsp"%>
      </div>
    </div>
  </div>
</div>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值