前言:
????????此项目笔记记录学习黑马程序员SpringBoot2全套视频教程[1]中基础篇29-50springboot整合SSMP的教程,并参考暗恋花香[2]博主的博客内容进行编写.
? ? ? ? 友情链接:
? ? ? ? ? ? ? ? [1]:黑马程序员SpringBoot2全套视频
? ? ? ? ? ? ? ? [2]:Spring Boot 2 基础篇学习笔记_陈建兵-CSDN博客
P29 SSMP整合案例制作分析
案例效果演示:
案例实现方案分析与流程解析:
1.?实体类开发————使用Lombok快速制作实体类 2.?Dao开发————整合MyBatisPlus,制作数据层测试 3.?Service开发————基于MyBatisPlus进行增量开发,制作业务层测试类 4.?Controller开发————基于Restful开发,使用PostMan测试接口功能 5.?Controller开发————前后端开发协议制作 6.?页面开发————基于VUE+ElementUI制作,前后端联调,页面数据处理,页面消息处理 ???-?列表 ???-?新增 ???-?修改 ???-?删除 ???-?分页 ???-?查询 7.?项目异常处理 8.?按条件查询————页面功能调整、Controller修正功能、Service修正功能
小结:
? ? ? ? 1.案例效果演示
? ? ? ? 2.案例实现方案分析与流程解析
P30-模块创建
? ? ? ? #由于我的IDEA中无法使用springboot官网的服务器URL所以我采用官网创建工程,并外部引入的方式来创建项目。
项目架构:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itheima</groupId>
<artifactId>springboot_07_ssmp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!--<dependency>-->
<!-- <groupId>log4j</groupId>-->
<!-- <artifactId>log4j</artifactId>-->
<!-- <version>1.2.17</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
????????pom.xml分析:导入web、druid、mp、mysql、lombok的坐标。
?application.yml
server:
port: 80
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
username: ****
password: ****
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
id-type: auto #id自增策略
?????????application.yml分析:mp配置设置前缀tbl_;id自增策略
?tbl_book.sql
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE `tbl_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 `tbl_book` VALUES ('1', '计算机理论', 'Spring实战第5版', 'Spring入门经典教程,深入理解Spring原理技术内幕');
INSERT INTO `tbl_book` VALUES ('2', '计算机理论', 'Spring 5核心原理与30个类手写实战', '十年沉淀之作,写Spring精华思想');
INSERT INTO `tbl_book` VALUES ('3', '计算机理论', 'Spring 5设计模式', '深入Spring源码剖析Spring源码中蕴含的10大设计模式');
INSERT INTO `tbl_book` VALUES ('4', '计算机理论', 'Spring MVC+ MyBatis开发从入门到项目实战', '全方位解析面向Web应用的轻量级框架,带你成为Spring MVC开发高手');
INSERT INTO `tbl_book` VALUES ('5', '计算机理论', '轻量级Java Web企业应用实战', '源码级剖析Spring框架,适合已掌握Java基础的读者');
INSERT INTO `tbl_book` VALUES ('6', '计算机理论', 'Java核心技术卷|基础知识(原书第11版)', 'Core Java第11版,Jolt大奖获奖作品,针对Java SE9、10、 11全面更新');
INSERT INTO `tbl_book` VALUES ('7', '计算机理论', '深入理解Java虚拟机', '5个维度全面剖析JVM,面试知识点全覆盖');
INSERT INTO `tbl_book` VALUES ('8', '计算机理论', 'Java编程思想(第4版)', 'Java学习必读经典殿堂级著作!赢得了全球程序员的广泛赞誉');
INSERT INTO `tbl_book` VALUES ('9', '计算机理论', '零基础学Java (全彩版)', '零基础自学编程的入门]图书,由浅入深,详解Java语言的编程思想和核心技术');
INSERT INTO `tbl_book` VALUES ('10', '市场营销', '直播就该这么做:主播高效沟通实战指南', '李子柒、李佳琦、薇娅成长为网红的秘密都在书中');
INSERT INTO `tbl_book` VALUES ('11', '市场营销', '直播销讲实战一本通', '和秋叶一起学系列网络营销书籍');
INSERT INTO `tbl_book` VALUES ('12', '市场营销', '直播带货:淘宝、天猫直播从新手到高手', '一本教你如何玩转直播的书, 10堂课轻松实现带货月入3W+');
小结:
? ? ? ? 1.项目架构
? ? ? ? 2.application.yml
? ? ? ? 3.pom.xml
? ? ? ? 4.tbl_book.sql
P31-实体类快速开发(lombok)????????
- Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
? ? ? ? 在domain包创建一个Book类
????????
package com.itheima.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author
* @version 1.0
* @date 2021/12/25 22:28
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private Integer id;
private String type;
private String name;
private String description;
}
- Book类注解分析:
- @Data:提供set,get,equals,toString等方法;
- @ALLArgsConstructor:提供有参构成方法
- @NOArgsConstructor:提供无参构成方法
- 结构图:
????????????????
小结:
? ? ? ? 1.lombok的maven坐标
? ? ? ? 2.快速开发实体类对应的三个注解功能
P32-数据层标准开发(基础CRUD)
- 导入MyBatisPlus与Druid对应的starter
- 配置数据源与MyBatisPlus对应的基础配置(id生成策略使用数据库自增策略)
- 继承BaseMapper并指定泛型
? ? ? ? 在dao包下创建BookDao接口:
package com.itheima.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.domain.Book;
import org.apache.ibatis.annotations.Mapper;
/**
* @author
* @version 1.0
* @date 2021/12/25 22:36
*/
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
????????BaseMapper是mp包下的一个重要接口,里定义了大部分基础的CRUD操作,还提供了分页功能,架构图:
package com.itheima;
import com.itheima.dao.BookDao;
import com.itheima.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SSMPApplicationTest {
@Autowired
private BookDao bookDao;
/**
* 根据ID查询
*/
@Test
void testSelectById() {
System.out.println(bookDao.selectById(5));
}
/**
* 删除
*/
@Test
void testDeleteById() {
System.out.println(bookDao.deleteById(5));
}
/**
* 增加
*/
@Test
void testInsert() {
Book book = new Book();
book.setType("测试数据123");
book.setName("测试数据123");
book.setDescription("测试数据123");
System.out.println(bookDao.insert(book));
}
/**
* 修改
*/
@Test
void testUpdateById() {
Book book = new Book();
book.setId(13);
book.setType("测试数据123aaaaaa");
book.setName("测试数据123aaaaaaa");
book.setDescription("测试数据123");
System.out.println(bookDao.updateById(book));
}
/**
* 查询全部
*/
@Test
void testSelectList() {
System.out.println(bookDao.selectList(null));
}
/**
* 分页查询
*/
@Test
void testSelectPage() {
// System.out.println(bookDao.selectPage(5));
}
/**
*
*/
@Test
void testSelectBy() {
// System.out.println(bookDao.selectPage(5));
}
}
?小结:
- 导入MyBatisPlus与Druid对应的starter
- 配置数据源与MyBatisPlus对应的基础配置(id生成策略使用数据库自增策略)
- 继承BaseMapper并指定泛型
- 制作测试类测试结果
——2021年12月26日11:22:29
P33-开启MP运行日志
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
id-type: auto #id自增策略
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- 标准日志输出
- Preparing: SELECT id,type,name,description FROM tbl_book:预编译的SQL语句
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@470d183] was not registered for synchronization because synchronization is not active
2021-12-26 11:33:44.351 INFO 104636 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2021-12-26 11:33:44.357 WARN 104636 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2021-12-26 11:33:44.583 INFO 104636 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@216919586 wrapping com.mysql.cj.jdbc.ConnectionImpl@59b32539] will not be managed by Spring
==> Preparing: SELECT id,type,name,description FROM tbl_book
==> Parameters:
<== Columns: id, type, name, description
<== Row: 1, 计算机理论, Spring实战第5版, Spring入门经典教程,深入理解Spring原理技术内幕
<== Row: 2, 计算机理论, Spring 5核心原理与30个类手写实战, 十年沉淀之作,写Spring精华思想
<== Row: 3, 计算机理论, Spring 5设计模式, 深入Spring源码剖析Spring源码中蕴含的10大设计模式
<== Row: 4, 计算机理论, Spring MVC+ MyBatis开发从入门到项目实战, 全方位解析面向Web应用的轻量级框架,带你成为Spring MVC开发高手
<== Row: 5, 计算机理论, 轻量级Java Web企业应用实战, 源码级剖析Spring框架,适合已掌握Java基础的读者
<== Row: 6, 计算机理论, Java核心技术卷|基础知识(原书第11版), Core Java第11版,Jolt大奖获奖作品,针对Java SE9、10、 11全面更新
<== Row: 7, 计算机理论, 深入理解Java虚拟机, 5个维度全面剖析JVM,面试知识点全覆盖
<== Row: 8, 计算机理论, Java编程思想(第4版), Java学习必读经典殿堂级著作!赢得了全球程序员的广泛赞誉
<== Row: 9, 计算机理论, 零基础学Java (全彩版), 零基础自学编程的入门]图书,由浅入深,详解Java语言的编程思想和核心技术
<== Row: 10, 市场营销, 直播就该这么做:主播高效沟通实战指南, 李子柒、李佳琦、薇娅成长为网红的秘密都在书中
<== Row: 11, 市场营销, 直播销讲实战一本通, 和秋叶一起学系列网络营销书籍
<== Row: 12, 市场营销, 直播带货:淘宝、天猫直播从新手到高手, 一本教你如何玩转直播的书, 10堂课轻松实现带货月入3W+
<== Row: 13, 测试数据123aaaaaa, 测试数据123aaaaaaa, 测试数据123
<== Row: 14, 测试数据123, 测试数据123, 测试数据123
<== Total: 14
Closing non transactional SqlSession
小结:
? ? ? ? 1.?配置yml,开启MP的启动日志
? ? ? ? 2.控制端查看
——2021年12月26日11:42:15
P34-分页
|