一、SpringBoot基础学习1——入门案例(idea联网版)
二、SpringBoot基础学习2——入门案例(官网创建版)
三、SpringBoot基础学习3——入门案例(阿里云版)
四、SpringBoot基础学习4——REST开发相关知识
五、SpringBoot基础学习5——基础配置
SpringBoot基础学习7——SSMP整合案例
- SpringBoot学习笔记
- 一、案例效果
- 二、案例实现方案分析与流程解析
- 三、模块创建与项目目录结构
- 四、pom.xml文件
- 五、数据库文件 tb_book.sql
- 六、配置文件 application.yml
- 七、数据层标准开发(基础CRUD)
- 7.1 实体类 Book.java
- 7.2 BookMapper.java
- 7.3 业务层
- 7.3 MPConfig.java
- 八、表现层标准开发
- 8.1 BookController.java
- 九、表现层数据一致性处理(R对象)
- 9.1 R.java
- 十、异常消息处理 ProjectExceptionAdvice.java
- 十一、前端代码
提示:以下是本篇文章正文内容,下面案例可供参考
一、案例效果 二、案例实现方案分析与流程解析1. 案例实现方案分析 (1)实体类开发————使用Lombok快速制作实体类 (2)Mapper开发————整合MyBatisPlus,制作数据层测试类 (3)Service开发————基于MyBatisPlus进行增量开发,制作业务层测试类 (4)Controller开发————基于Restful开发,使用PostMan测试接口功能 (5)Controller开发————前后端开发协议制作 (6)页面开发————基于VUE+ElementUI制作,前后端联调,页面数据处理,页面消息处理 列表、新增、修改、删除、分页、查询 项目异常处理 (7)按条件查询————页面功能调整、Controller修正功能、Service修正功能 2. SSMP案例制作流程解析 (1)先开发基础CRUD功能,做一层测一层 (2)调通页面,确认异步提交成功后,制作所有功能 (3)添加分页功能与查询功能三、模块创建与项目目录结构
五、数据库文件 tb_book.sqlcom.alibaba druid-spring-boot-starter 1.2.8 com.baomidou mybatis-plus-boot-starter 3.5.1 org.projectlombok lombok org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test
DROP TABLE IF EXISTS `tb_book`;
CREATE TABLE `tb_book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(20) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tbl_book
-- ----------------------------
INSERT INTO `tb_book` VALUES ('1', '计算机理论', 'Spring实战第5版', 'Spring入门经典教程,深入理解Spring原理技术内幕');
INSERT INTO `tb_book` VALUES ('2', '计算机理论', 'Spring 5核心原理与30个类手写实战', '十年沉淀之作,写Spring精华思想');
INSERT INTO `tb_book` VALUES ('3', '计算机理论', 'Spring 5设计模式', '深入Spring源码剖析Spring源码中蕴含的10大设计模式');
INSERT INTO `tb_book` VALUES ('4', '计算机理论', 'Spring MVC+ MyBatis开发从入门到项目实战', '全方位解析面向Web应用的轻量级框架,带你成为Spring MVC开发高手');
INSERT INTO `tb_book` VALUES ('5', '计算机理论', '轻量级Java Web企业应用实战', '源码级剖析Spring框架,适合已掌握Java基础的读者');
INSERT INTO `tb_book` VALUES ('6', '计算机理论', 'Java核心技术卷|基础知识(原书第11版)', 'Core Java第11版,Jolt大奖获奖作品,针对Java SE9、10、 11全面更新');
INSERT INTO `tb_book` VALUES ('7', '计算机理论', '深入理解Java虚拟机', '5个维度全面剖析JVM,面试知识点全覆盖');
INSERT INTO `tb_book` VALUES ('8', '计算机理论', 'Java编程思想(第4版)', 'Java学习必读经典殿堂级著作!赢得了全球程序员的广泛赞誉');
INSERT INTO `tb_book` VALUES ('9', '计算机理论', '零基础学Java (全彩版)', '零基础自学编程的入门]图书,由浅入深,详解Java语言的编程思想和核心技术');
INSERT INTO `tb_book` VALUES ('10', '市场营销', '直播就该这么做:主播高效沟通实战指南', '李子柒、李佳琦、薇娅成长为网红的秘密都在书中');
INSERT INTO `tb_book` VALUES ('11', '市场营销', '直播销讲实战一本通', '和秋叶一起学系列网络营销书籍');
INSERT INTO `tb_book` VALUES ('12', '市场营销', '直播带货:淘宝、天猫直播从新手到高手', '一本教你如何玩转直播的书, 10堂课轻松实现带货月入3W+');
六、配置文件 application.yml
# 端口
server:
port: 80
# 配置druid
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springbootdb?serverTimezone=UTC
username: root
password: root
# 配置MP
mybatis-plus:
global-config:
db-config:
table-prefix: tb_
# id自增
id-type: auto
# 日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
七、数据层标准开发(基础CRUD)
7.1 实体类 Book.java
@Data
public class Book {
private Integer id;
private String type;
private String name;
private String description;
}
7.2 BookMapper.java
@Mapper public interface BookMapper extends BaseMapper7.3 业务层{ }
(1)接口定义 IBookService.java
public interface IBookService extends IService{ IPage getPage(int currentPage, int pageSize); IPage getPage(int currentPage, int pageSize, Book book); }
(2)实现类 BookServiceImpl.java
@Service public class BookServiceImpl extends ServiceImpl7.3 MPConfig.javaimplements IBookService { @Autowired private BookMapper bookMapper; @Override public IPage getPage(int currentPage, int pageSize) { IPage page = new Page(currentPage, pageSize); bookMapper.selectPage(page,null); return page; } @Override public IPage getPage(int currentPage, int pageSize, Book book) { IPage page = new Page(currentPage, pageSize); LambdaQueryWrapper lqw = new LambdaQueryWrapper (); lqw.like(Strings.isNotEmpty(book.getType()), Book::getType, book.getType()); lqw.like(Strings.isNotEmpty(book.getName()), Book::getName, book.getName()); lqw.like(Strings.isNotEmpty(book.getDescription()), Book::getDescription, book.getDescription()); bookMapper.selectPage(page, lqw); return page; } }
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//1.定义MP拦截器
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//2.添加具体的拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
八、表现层标准开发
8.1 BookController.java
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private IBookService bookService;
@GetMapping
public R getAll(){
return new R(true,bookService.list());
}
@PostMapping
public R save(@RequestBody Book book) throws IOException {
if(book.getName().equals("123")) throw new IOException();
boolean flag = bookService.save(book);
return new R(flag, flag ? "添加成功^_^" : "添加失败-_-!");
}
@PutMapping
public R update(@RequestBody Book book){
return new R(bookService.updateById(book));
}
@DeleteMapping("{id}")
public R delete(@PathVariable Integer id){
return new R(bookService.removeById(id));
}
@GetMapping("{id}")
public R getById(@PathVariable Integer id){
return new R(true,bookService.getById(id));
}
@GetMapping("{currentPage}/{pageSize}")
public R getPage(@PathVariable int currentPage, @PathVariable int pageSize, Book book){
System.out.println("参数" + book);
IPage page = bookService.getPage(currentPage, pageSize, book);
//如果当前页码值大于总页码值,那么重新执行查询操作,使用最大页码值作为当前页码值
if( currentPage > page.getPages()){
page = bookService.getPage((int) page.getPages(), pageSize, book);
}
return new R(true,page);
}
}
九、表现层数据一致性处理(R对象)
9.1 R.java
(1)设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议
@Data
public class R {
private Boolean flag;
private Object data;
private String msg;
public R(){
}
public R(Boolean flag){
this.flag = flag;
}
public R(Boolean flag, Object data){
this.flag = flag;
this.data = data;
}
public R(Boolean flag, String msg){
this.flag = flag;
this.msg = msg;
}
public R(String msg){
this.msg = msg;
}
}
十、异常消息处理 ProjectExceptionAdvice.java
//作为springmvc的异常处理器
//@ControllerAdvice
@RestControllerAdvice
public class ProjectExceptionAdvice {
//拦截所有异常信息
@ExceptionHandler(Exception.class)
public R doException(Exception ex){
//记录日志
//通知运维
//通知开发
ex.printStackTrace();
//return new R(false,"服务器故障,请稍后再试!");
return new R("服务器故障,请稍后再试!");
}
}
十一、前端代码
基于SpringBoot整合SSM案例
图书管理
查询
新建
编辑
删除



