项目截图
一:整合springboot和mybatis
https://developer.aliyun.com/article/920574?spm=a2c6h.13148508.setting.15.7d7d4f0e4Dem2g
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文件
就是一些图片
前端的库
Vuevue官网:
jQueryjQuery:
2.3 前端视图的相关资源文件
目录
这里的代码放在前端模板了不然感觉篇幅过长
代码链接https://developer.aliyun.com/article/920619?
spm=a2c6h.13148508.setting.12.7d7d4f0e4Dem2g
三 后端部分
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]