IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 基于SpringBoot的SSMP整合案例(学习笔记) -> 正文阅读

[Java知识库]基于SpringBoot的SSMP整合案例(学习笔记)

前言:

????????此项目笔记记录学习黑马程序员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));
	}


}

?小结:

  1. 导入MyBatisPlus与Druid对应的starter
  2. 配置数据源与MyBatisPlus对应的基础配置(id生成策略使用数据库自增策略)
  3. 继承BaseMapper并指定泛型
  4. 制作测试类测试结果

——2021年12月26日11:22:29

P33-开启MP运行日志

  • 为方便调试可以开启MyBatisPlus的日志
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-分页

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:00:25  更:2021-12-26 22:02:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:25:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码