栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot基础学习7——SSMP整合案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot基础学习7——SSMP整合案例

SpringBoot学习笔记

一、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)添加分页功能与查询功能
三、模块创建与项目目录结构



四、pom.xml文件

        
        
            com.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
        
    
五、数据库文件 tb_book.sql
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 BaseMapper {
}
7.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 ServiceImpl implements 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;
    }
}
7.3 MPConfig.java
@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案例

    

    

    

    

    





图书管理

查询 新建
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号