springboot项目 CURD-资源站前言:
作者简介:我是笑霸final,一名热爱技术的在校学生。
个人主页:笑霸final的主页
系列专栏::本文写在java专栏
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
如果感觉博主的文章还不错的话,点赞 + 关注 + 羅收藏羅
- 项目截图
- 一:整合springboot和mybatis
- 1.1其他依赖
- 1.2项目目录
- 1.3数据库
- 二:前端部分
- 2.1 项目文件截图
- 2.2 static的相关资源文件
- 2.2.1css文件
- 2.2.2images文件
- 2.2.2 js文件
- 2.3 前端视图的相关资源文件
- 三 后端部分
- 3.1pojo
- 3.2mapper
- 3.3Service
- 3.4Controller
- 常用数据:
详细请看我详细介绍的博客
整合springboot和mybatis的链接
1.1其他依赖一 lombok用在pojo让java代码看起来清晰
org.projectlombok lombok true
二分页插件 后面用到数据库的分页
1.2项目目录 1.3数据库com.github.pagehelper pagehelper 5.0.0
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二:前端部分
2.1 项目文件截图 2.2 static的相关资源文件 2.2.1css文件还得补前端部分页面写的太丑了还借鉴了网络资料
这部分用到了简单的vue
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
目录
这里的代码放在前端模板了不然感觉篇幅过长
代码链接:代码
三 后端部分 3.1pojoPOJO是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方法,同时可以自动化日志变量
依赖:
3.2mapperorg.projectlombok lombok true
使用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;
@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 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(配置模式+注解模式)
3.3Serviceinsert into books value (#{bookId},#{bookName},#{bookCounts},#{detail}) update books set bookCounts=#{bookCounts},detail=#{detail} where bookId= #{bookId,jdbcType=INTEGER} and bookName = #{bookName}
功能: 对于单张表的增、删、改、查(单条查、批量查、分页查)功能
用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;
@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 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 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的一个插件,其作用是更加方便地进行分页查询
添加依赖
com.github.pagehelper pagehelper 5.0.0
然后需要在mybatis配置文件中开启分页插件
常用数据:
- pageNum:当前页的页码
- pageSize:每页显示的条数
- size:当前页显示的真实条数
- total:总记录数
- pages:总页数
- prePage:上一页的页码
- nextPage:下一页的页码
- isFirstPage/isLastPage:是否为第一页/最后一页
- hasPreviousPage/hasNextPage:是否存在上一页/下一页
- navigatePages:导航分页的页码数
- navigatepageNums:导航分页的页码,[1,2,3,4,5]
如果感觉博主的文章还不错的话,点赞 + 关注 + 羅收藏羅



