springboot项目 CURD-资源站

简介: springboot项目 CURD-资源站项目截图一:整合springboot和mybatis1.1其他依赖1.2项目目录1.3数据库二:前端部分2.1 项目文件截图2.2 static的相关资源文件2.2.1css文件2.2.2images文件2.2.2 js文件2.3 前端视图的相关资源文件三 后端部分3.1pojo3.2mapper3.3Service3.4Controller

项目截图

0a67563125514ad8a8d6ed9243a9cde3.png

4cc759f0a8dd4e78868455f2ed4ed4c0.png

f27dd318e52242b9a733c22a52382b8f.png


一:整合springboot和mybatis


https://developer.aliyun.com/article/920574?spm=a2c6h.13148508.setting.15.7d7d4f0e4Dem2g


1.1其他依赖


lombok用在pojo让java代码看起来清晰


d104f9621baf49d3bfd44f734f04aabf.png


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


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

fe17e1b6f19745e5b2840ad15a93533a.png


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


1.2项目目录


28df4b101dde4c41b05cb6d46feb31fc.png


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 项目文件截图


929d9bfde6714946889dfc0d7bf6f628.png


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文件

就是一些图片

c71945e9984b4976af0352ff7a9377a8.png




前端的库


Vuevue官网:


jQueryjQuery:

43af95fe3a6b4845a484ecb22b63b41d.png

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


目录


3008de733e914b1fb1cc706542556c5a.png


这里的代码放在前端模板了不然感觉篇幅过长


代码链接https://developer.aliyun.com/article/920619?


spm=a2c6h.13148508.setting.12.7d7d4f0e4Dem2g


三 后端部分


b041a9d112364948ae6153d041fec7dc.png


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(配置模式+注解模式)


6789ecdee1844ae5a9081cfe4f9c6fa9.png


<?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请求中获得信息,提取参数,并分发给不同的处理服务。

a75d3860d1b34e18bb98271a9fcd2c05.png


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的一个插件,其作用是更加方便地进行分页查询


3ae22336cc1f47078d3f8d1383399f90.png


添加依赖


 <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]


目录
相关文章
|
1月前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
|
1月前
|
NoSQL Java MongoDB
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
46 0
Springboot WebFlux项目结合mongodb进行crud
|
16天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
53 1
SpringBoot获取项目文件的绝对路径和相对路径
|
7天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
18 2
|
11天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
34 8
|
1月前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
349 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
18天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
40 2
|
18天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
47 2
|
18天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
34 1
|
20天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。