IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot项目 CURD-资源站 -> 正文阅读

[Java知识库]springboot项目 CURD-资源站

前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。
📝个人主页:笑霸final的主页
📕系列专栏::本文写在java专栏
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

项目截图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一:整合springboot和mybatis

详细请看我详细介绍的博客

整合springboot和mybatis的链接

1.1其他依赖

lombok用在pojo让java代码看起来清晰
在这里插入图片描述

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

分页插件 后面用到数据库的分页

在这里插入图片描述

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

1.2项目目录

在这里插入图片描述

1.3数据库

CREATE DATABASE `ssmbuild`;
USE `ssmbuild`;
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '资源id',
`bookName` VARCHAR(100) NOT NULL COMMENT '资源',
`bookCounts` VARCHAR(11) NOT NULL COMMENT '验证码',
`detail` VARCHAR(200) NOT NULL COMMENT '网盘链接',
KEY `bookID` (`bookID`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

二:前端部分

还得补前端部分页面写的太丑了还借鉴了网络资料
这部分用到了简单的vue

2.1 项目文件截图

在这里插入图片描述

2.2 static的相关资源文件

2.2.1css文件

body{
    width: auto;
    height: auto;
    background-image: url(../images/background01.png);
    background-size:100% 100%;
    background-attachment: fixed;
}

2.2.2images文件

就是一些图片
在这里插入图片描述

2.2.2 js文件

前端的库

vue官网:Vue
jQuery:jQuery
在这里插入图片描述

2.3 前端视图的相关资源文件

目录
在这里插入图片描述
这里的代码放在前端模板了不然感觉篇幅过长

代码链接:代码

三 后端部分

在这里插入图片描述

3.1pojo

POJO是Plain OrdinaryJava Object的缩写,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。

package com.xbfinal.ssm.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class book {
    //实体类

    private Integer bookId;

    private String bookName;

    private String bookCounts;

    private String detail;

}

这里使用了lombok
Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量

依赖

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

3.2mapper

使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障。这时,通用Mapper便应运而生。
通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。

package com.xbfinal.ssm.mapper;

import com.xbfinal.ssm.pojo.book;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @autor 笑霸fianl~
 * 欢迎访问GitHub:https://github.com/XBfinal
 * 欢迎访问Gitee:https://gitee.com/XBfianl
 * 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
 */
@Mapper//接口实现增删改查
public interface bookMapper {

    //更具id查对应的书用注解模式
    @Select("select * from books where bookId=#{id}")
    public book getById(@Param("id")int id);
    @Select("select * from books")
    public List<book> getAll();

    //增加书籍
    public void addBook(book book);

    //删除书籍信息
@Delete("delete from books  where bookId=#{id}  and bookName=#{bookName} ")
    public void deleteBook(@Param("id") Integer id,@Param("bookName") String bookName);
    //修改
    public  void upData(book book);

}

当然一些复杂的sql语句可以用配置文件写(看个人喜好,这里只是一种方法), 开始我们已经整合了mybatis和springbpoot 当时用的混合模式详细请看springboot整合mybatis(配置模式+注解模式)

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xbfinal.ssm.mapper.bookMapper">
    <!-- public void addBook(book book);-->
    <insert id="addBook">
        insert into books
            value (#{bookId},#{bookName},#{bookCounts},#{detail})
    </insert>
<!--public  void upData(book book);-->
    <!--@Delete("delete from books  where bookId=#{id}  and bookName=#{bookName} ")-->
    <update id="upData">
         update books set bookCounts=#{bookCounts},detail=#{detail}
         where bookId= #{bookId,jdbcType=INTEGER} and bookName = #{bookName}
    </update>

    

</mapper>

3.3Service

功能: 对于单张表的增、删、改、查(单条查、批量查、分页查)功能
用Service来调用mapper

代码:

package com.xbfinal.ssm.service;

import com.xbfinal.ssm.mapper.bookMapper;
import com.xbfinal.ssm.pojo.book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @autor 笑霸fianl~
 * 欢迎访问GitHub:https://github.com/XBfinal
 * 欢迎访问Gitee:https://gitee.com/XBfianl
 * 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
 */
@Service//一般使用service层调用mapper
public class bookUser {
    @Autowired
    bookMapper bookMapper;
    //根据id找书籍
    public book getById(int id){
        return bookMapper.getById(id);
    }
    //添加
    public void addBook(book book){
        bookMapper.addBook(book);
    }
    //查询所有的书
    public List<book> getAll(){
        return bookMapper.getAll();
    }
    //删除当前资源
    public void deleteBook(Integer Id,String bookName){
         bookMapper.deleteBook(Id,bookName);
    }
    //修改
    public  void upData(book book){
        bookMapper.upData(book);
    }
}

3.4Controller

Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果。他的重点就在于如何从HTTP请求中获得信息,提取参数,并分发给不同的处理服务。
在这里插入图片描述

package com.xbfinal.Controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xbfinal.ssm.pojo.book;
import com.xbfinal.ssm.service.bookUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Controller
public class bookController {
    @Autowired
    private bookUser bookUser;
    
    @RequestMapping("/")
    public String toIndex() {
        return "index";
    }

    //查询所有的书籍
    @RequestMapping("/allBook/{pn}")
    public String getAll(Model model,
    @PathVariable(value="pn",required = false) Integer pn) {
        //查询书
        //映入PageHelper分页插件
        //在查询之前调用//传入页码和每页显示的数目
        PageHelper.startPage(pn, 5);//紧跟者就是分页查询

        List<book> all = bookUser.getAll();
        System.out.println("信息"+all);
        //使用pageInfo 包装查询后的结果
        PageInfo page = new PageInfo(all,5);//5是连续连续显示的页数
        model.addAttribute("page",page);
        return "books/allBook";
    }

    //跳转到添加书籍的页面
    @RequestMapping("/toAddBook")
    public String toAddBook(){
        return "books/addBook";
    }

    //添加书籍的请求
    @RequestMapping( value= "/addBook",method = RequestMethod.GET)
    public String addBook(book book){
    bookUser.addBook(book);
    return "redirect:/allBook/1";
    }

   //删除
    @RequestMapping(value="/deleteBook/{bookId}/{bookName}" ,method = RequestMethod.DELETE)
    public String deleteBook(
            @PathVariable("bookId") int bookId,
            @PathVariable("bookName") String bookName){
        bookUser.deleteBook(bookId,bookName);
        return "redirect:/allBook/1";//删除后应该用重定向
    }
    //跳转修改页面
    @PutMapping( "/upDataBook/{bookId}/{bookName}/{BookCounts}")
    public String deleteBook(
            @PathVariable("bookId") int bookId,
            @PathVariable("bookName") String bookName,
            @PathVariable("BookCounts") String BookCounts,Model model
    ){
        final book book = new book(bookId,bookName,BookCounts,null);
        model.addAttribute("book",book);
        return "books/toUpData";
    }
    //修改请求
    @PostMapping("/Update01")
    public String Update01(book book){
        bookUser.upData(book);
        return "redirect:/allBook/1";
    }



}

其中使用了分页插件pagehelperpagehelper是mybatis的一个插件,其作用是更加方便地进行分页查询
在这里插入图片描述

添加依赖

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

然后需要在mybatis配置文件中开启分页插件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--基本的东西都不用配置,因为springboot配好了-->
    <plugins>
        <!--设置分页插件-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
</configuration>

常用数据:

  • pageNum:当前页的页码
  • pageSize:每页显示的条数
  • size:当前页显示的真实条数
  • total:总记录数
  • pages:总页数
  • prePage:上一页的页码
  • nextPage:下一页的页码
  • isFirstPage/isLastPage:是否为第一页/最后一页
  • hasPreviousPage/hasNextPage:是否存在上一页/下一页
  • navigatePages:导航分页的页码数
  • navigatepageNums:导航分页的页码,[1,2,3,4,5]

![请添加图片描述](https://img-blog.csdnimg.cn/0bb29326e45d4ed59d2d78badbeadace.png

🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏请添加图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:20:27  更:2022-05-12 16:23:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:04:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码