MyBatis综合练习案例1——Servlet+JSP+MyBatis+分页插件,完成增删改查功能

目录

一、呈现效果

二、各部分作用以及配置

1.PageHelper

2.MyBatis

3.jsp

4.Servlet

5.业务层方法

三、Dao层

四、实体类


一、呈现效果

 如何所示要要使用Servlet+JSMYbatis与分页插件做出一个简单的页面效果,这个案例的重点在于如何将这几个部分结合起来,以及如何便捷的使用分页插件,抛却之前对于分页所做的复杂的工作,使得我们的能够专注于业务功能的实现

二、各部分作用以及配置

1.PageHelper

PageHelper:分页插件,帮助我们简单快捷的完成分页功能的实现,省却哪些复杂而冗余的代码,是适用于MyBatis框架的一个分页插件,使用方式极为便捷,支持任何复杂的单表、多表分页查询操作。

官方网站:MyBatis 分页插件 PageHelper

下载地址:https://github.com/pagehelper/Mybatis-PageHelper

 在mybatis的配置文件xml中导入分页插件

 

在pom.xml中导入依赖包


      <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>

2.MyBatis

MyBatis对原有JDBC操作进行了封装,几乎消除了所有的JDBC代码,使得我们程序员能够只关注于SQL本身,极大的减轻了我们的负担

在pom.xml中导入核心依赖,省去了我们手动导包的流程

 <!--MyBatis核心依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!--MySql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

3.jsp

这是前端展示页面,能够将我们的数据展示给前端

<%--此处form与table里的class是使用bootstrap中的表单格式,省去修饰表单的部门--%>
<form class="container">
    <table border="1px" class="table table-striped table-hover table-bordered container" >
        <tr>
            <th>编号</th>
            <th>书名</th>
            <th>作者</th>
            <th>价格</th>
        </tr>
        <%--循环遍历输出我们在后端所存的值--%>
        <c:forEach items="${page.list}" var="p">
            <tr>
                <td>${p.id}</td>
                <td>${p.name}</td>
                <td>${p.author}</td>
                <td>${p.price}</td>
            </tr>
        </c:forEach>
    </table>
    <%--这里是分页功能的实现,因为分页插件里已经给我们写好了,所以直接调用即可--%>
    <a href="/book?currentPage=1">首页</a>
    <a href="/book?currentPage=${page.pageNum-1}">上一页</a>
    <a href="/book?currentPage=${page.pageNum+1}">下一页</a>
    <a href="/book?currentPage=${page.navigateLastPage}">尾页</a>
    共${page.pageNum}/${page.pages}页
</form>

4.Servlet

@WebServlet("/book")//服务器的路径
public class BookServlet extends HttpServlet {
    //以多态形式实例化业务层对象,方便与使得业务逻辑与控制层相分离
    private BookService bookService=new BookServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端所代表的当前页
        int current = Integer.parseInt(req.getParameter("currentPage"));
        System.out.println(current);
        //调用业务层方法,返回得到书籍的数据集合
        List<Book> books = bookService.selectAllBook(current);
        //这里类似于我们之前写的原生的page实体
        PageInfo page=new PageInfo(books);
        System.out.println(books);
        //将每页的内容存储起来
        req.getSession().setAttribute("page",page);
        //这里要采用转发而不是重定向的方式因为要将page中的值传到前端去
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }
}

5.业务层方法

BookDao bookDao = MyBatisUtils.getMapper(BookDao.class);
    public List<Book> selectAllBook(int current) {
        //给当前页先赋予一个1的初始值
        int currentPage=1;
        //判断从前端传过来的当前页是否为0
        if (current!=0){
            //如果不为0就要将前端传过来的值赋给当前页
            currentPage=current;
        }
        //使用分页插件,第一个参数当前页,第二个参数页大小
        PageHelper.startPage(current,4);
        //注意:这里开始使用分页插件一定要在第一个查询之前才会执行分页
        List<Book> books = bookDao.selectAllBook();
        return books;
    }

三、Dao层

public interface BookDao {
    //因为是查询,因此采用注解的形式查询出数据,减少冗余代码
    @Select("select * from book")
    public List<Book> selectAllBook();

四、实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
    private int id;
    private String name;
    private String author;
    private int price;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值