SSM框架(已完结)

Spring

image-20230928125530567

主要学这三

Spring framework

系统架构

image-20230928130142981

看看就行,记不住

image-20230928130323479

核心概念

IOC

image-20230928135040276

当出现新的实现类的时候,要改代码成 new bookDaoimpl2

解决方案

image-20230928135713457

通过外部的容器提供对象

image-20230928135623465

具体步骤

image-20230928142456450

image-20230928142659800

image-20230928143612608

image-20230928143628979

DI

入门案例

image-20230928144755899

set方法是改良后的对象的set,自己注意看

image-20230928144937376

bean

bean的基础配置

别名配置

image-20230928152541325

单例

image-20230928152823987

单例是指new 出来的两个对象是同一个

image-20230928153045798

不适合就是一些里面有数据的

实例化
构造方法(常用)

他的创建是调用类里的无参构造器

image-20230928171541260

静态工厂

image-20230928172049351

通过工厂获得对象,bean里有一个factory-method方法可以调用工厂里的方法

静态特点

  • 静态的方法只加载一次

  • 调用的时候不用实例化对象

实例工厂

image-20230928173627455

注意这里的工厂里的方法里没有static

image-20230928173427543

因为调用的工厂里不是静态的方法,想调用的话需要实例化对象,所以先弄一个bean,再弄factorybean

FactoryBean(常用)

image-20230928174228463

实现FactoryBean的类,自己看两个方法

默认是单例,修改如下图

image-20230928174412873

image-20230928174506303

生命周期

image-20230928175849357

可以控制bean开始和结束时的方法调用,一般用来数据注入之类的

image-20230928180031347

依赖注入方式

image-20230928193036514

比如说在数据库里导入的数据就是纯字符串,是基本类型的

setter
引用类型

基本类型

image-20230928194348347

构造器注入
引用类型

image-20230928200342672

基本没改,就是用构造器了

同时这里的name 里的bookDao变成了构造器里的参数

基本类型

image-20230928200427195

总结

案例

感悟

DI这其实就是类里面新建属性,ref的是引用的对象,value是基本类型

proprety文件的加载

image-20230929150717535

image-20230929150639415

建一个xmlns的地址,用context标签加下, 就可以直接用${}的形式来获取

image-20230929151043560

image-20230929151208156

注意property里的数据格式,图中下面的那条数据格式不对

加载多个配置文件

image-20230929151539414

image-20230929151721343

要求必须是最后一种

都是死代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd"
>
    <context:property-placeholder location="classpath*:*.properties"/>
</beans>

容器

创建

image-20230929160908652

总结

image-20230929170422296

image-20230929170443118

不用去纠结bean里的ID指的谁了,autowire="byType" 的框架都弄好了,真好用

注解开发

注解开发bean
<context:component-scan base-package="com.heima"/>

image-20230929171752231

image-20230929172952214

纯注解
bean

image-20230929173447392

image-20230929174123039

image-20230929194852366

image-20230929194903439

这个是init和destory

依赖注入
引用类型

image-20230929200151992

image-20230929200318823

简单类型

image-20230929200524601

properties

image-20230929200818259

多个用数组

第三方

image-20230929202319368

这个里面写的多的话太杂了,改良如下

image-20230929202500659

这里不是注解的话可以用<bean>来配置,但这个是纯注解,所以不一样

image-20230929203601423

image-20230929203614887

总结

image-20230929203711198

  • 注解配置文件用<Configuration>

  • bean标签用Compontent的这三个

  • bean标签的扫描用@ComponentScan("com.heima")

  • 依赖注入自动的用@Autowired 基本类型的用@value

整合MyBatis

1坐标

image-20230930135036450

2 配置包

image-20230930142525504

3 被导入的配置包

image-20230930142624943

image-20230930142640591

整合Junit

image-20230930143311537

就是用着测试功能的

AOP

概念

image-20230930172442657

image-20230930172507744

入门案例

image-20230930173034087

image-20230930174055234

image-20230930174105363

image-20230930174135762

image-20230930174148654

注意切入点的方法类型

image-20230930174215775

image-20230930174302154

image-20230930174313491

工作流程

image-20230930215742434

切入点表达式

语法格式

image-20230930220233702

image-20230930220530362

太麻烦了,改良如下

image-20230930220859544

.. 是指多个或者零个

image-20230930221755804

通知类型

image-20231001173247080

image-20231001174936806

image-20231001174949042

通知获取数据

image-20231001234900585

这三种数据

image-20231002000441846

image-20231002001433444

记住getArgs是获取参数的就行。方法返回值就是proceed

案例

image-20231002133933559

获取参数,判断是不是str类型,执行tirm方法,记得执行方法的把改完的参数加上

image-20231002134143796

事务

image-20231002134441801

案例

image-20231002145712730

就是一个锁的原理

image-20231002150646434

image-20231002150750223

image-20231002150805102

就是开启一个锁,成功一起成功,失败一起失败

事务实现

image-20231002152106607

事务相关配置

image-20231002152601335

写法

image-20231002152659515

image-20231002153642459

这里io出错后,不会一起回滚事务,要修改

留痕

image-20231002155112793

image-20231002155329882

让log的记载一定会发生

image-20231002155521302

SpringMVC

简介

image-20231002193425651

image-20231002193602756

image-20231002193653312

入门案例

image-20231002224908263

image-20231002224922170

image-20231002224932581

image-20231002224946844

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
​
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringConfig.class);
        return ctx;
    }
​
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
​
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

流程分析

image-20231003135644137

bean的控制

image-20231003135959307

请求与响应

image-20231003155542958

防止两个的Servlet的url一样

get

image-20231003200904220

image-20231003201436061

poet

image-20231003201452787

乱码

image-20231003202438671

这是在Servletconfig里改的

//    处理post的中文乱码问题
​
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("utf-8");
        return new Filter[]{characterEncodingFilter };
    }

请求参数

image-20231003203446204

普通参数

image-20231003203503003

pojo

image-20231003231652771

数组

image-20231003231812254

集合

image-20231003231901461

Json

image-20231004164409376

image-20231004164439245

image-20231004164458434

日期

image-20231004164956646

image-20231004165025866

响应

页面

image-20231004192937562

这里注释少了一个,返回的一定是页面

文本

image-20231004193059401

Json

image-20231004193127555

这个是自动转Json数据的

REST风格

简介

image-20231004193626820

入门案例

image-20231004201931856

image-20231004202005888

image-20231004202218686

快速开发

image-20231004202906869

image-20231004202919064

原代码

image-20231004203047340

改良后

image-20231004203456595

image-20231004203523372

案例

image-20231005111259325

image-20231005111324726

因为之前设置的所有路径都会去MVC,也就是Servlet而不是去静态的资源,所以会需要修改

image-20231005111455036

SSM框架

image-20231005154137434

image-20231012153259055

项目异常处理器

image-20231012213828684

image-20231012215323268

image-20231013094542212

前后台协议联调

image-20231018204949972

拦截器

简介

image-20231018214828320

image-20231018214952898

入门案例

image-20231018225143365

image-20231018225221176

image-20231018225230141

参数

image-20231020100006996

image-20231020100032921

image-20231022183929325

拦截器特有的执行顺序

preHandle返回值为flase时,会不让后面的运行,但有其独有的顺序

Maven进阶

分模块开发

image-20231023101105874

image-20231023101205857

记得读取数据要用到本地仓库,要使用install功能

依赖传递

依赖管理

image-20231023101355740

image-20231023101724341

依赖具有传递性,依赖里套依赖

依赖冲突

image-20231023102104769

可选依赖和排除依赖

自己的

image-20231023110734656

别人的

image-20231023110758396

继承与聚合

聚合

image-20231023215026597

image-20231023215026597

继承

image-20231023220328113

image-20231023232736932

image-20231023232742861

image-20231023232751824

这个是那些非必选的依赖的设置

image-20231023232819375

继承父类的依赖

image-20231023232855097

image-20231023232903701

这个记得

image-20231023232934360

属性

image-20231024162734837

用来简化操作的

image-20231024163556125

image-20231024163602860

资源文件属性加载

image-20231024183208537

image-20231024183214382

image-20231024183219556

其他属性

image-20231024183450263

版本性质

image-20231026205346458

多环境与应用

image-20231026205514493

<!--多种开发环境-->
    <profiles>
<!--        开发环境-->
        <profile>
            <id>env_dep</id>
            <properties><jdbc.url>jdbc:mysql://localhost:3306/db1</jdbc.url></properties>
            <!--设定为默认的开始环境-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
<!--        生产华环境 -->
        <profile>
            <id>env_pro</id>
            <properties><jdbc.url>jdbc:mysql://1225:3306/db1</jdbc.url></properties>
​
        </profile>
<!--        测试环境-->
        <profile>
            <id>env_test</id>
            <properties><jdbc.url>jdbc:mysql://1226:3306/db1</jdbc.url></properties>
​
        </profile>
    </profiles>

image-20231026210644878

image-20231026210658722

跳过测试

image-20231026215357358

<plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <skipTest>false</skipTest>
<!--                    排除不参与测试的代码-->
                    <excludes>
                        <excluede>**/BookServiceTest.java</excluede>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

image-20231026220719864

image-20231026220732462

私服

image-20231026230446450

image-20231026230503089

安装

image-20231027095007387

操作流程

image-20231027095709999

仓库分类

image-20231027095728533

资源上传与下载

image-20231027110834663

image-20231027110851124

image-20231027110902690

image-20231027110938965

SpringBoot

简介

解决了maven依赖的问题

解决了外部数据的导入问题

解决了Junit的测试问题

解决了一大堆配置的问题

image-20231031224819240

image-20231031230222033

image-20231031230247110

image-20231031230254226

快速启动

image-20231101144914150

image-20231101145238149

image-20231102103906539

配置属性

image-20231103101816057

image-20231103101832309

yaml

image-20231103102719642

image-20231103102725760

记得加空格

image-20231103103020643

外部数据的读取

1

image-20231103104320968

image-20231103111845655

image-20231103111901896

3 常用

image-20231103111953854

用一个类来封装,在通过类来获取数据

多环境

image-20231103115421591

#  启动类
spring:
  profiles:
    active: test
---
spring:
  config:
    activate:
      on-profile: test
server:
  port: 80
---
spring:
  config:
    activate:
      on-profile: zz
server:
  port: 89
---

image-20231103202022040

记得得在那个文件夹的位置用cmd才行

image-20231103224025585

maven与Spring的兼容

image-20231103225021029

就是pom文件里的变量让boot也能用 配置文件

image-20231103225119706

配置属性

image-20231104140454361

在被打包的位置写一个yml文件,可以直接覆盖配置类文件

image-20231104140547838

整合Junit

image-20231104160453014

这里直接写就行,但注意和配置类在同一个文件里,都是com.heimazzh.springboot_demon2

都给弄好了

整合Mybatis

image-20231104165840636

image-20231104165821490

dao类记得加@Mapper

真tm好用啊!

MybatisPlus

简介

image-20231106112206663

image-20231106112233504

image-20231106112242883

这个依赖版本不对

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

image-20231106112414869

这两名字要一样

image-20231106112442815

Lombok

image-20231106121358713

image-20231106121424807

image-20231106121432465

分页功能

image-20231106233556365

image-20231106233612877

image-20231106233622460

 @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
//        定义一个MP拦截器
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//        添加具体的拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }

条件查询

image-20231107165026585

在lqw里写条件

判断是否为null

在前面先判断一下是否为null

查询投影

分组查询

image-20231107220843335

就是select 不查全,查一部分,这里查出来不是类的属性,所以不能用selelist,用selectMaps

查询条件

只查询一个

image-20231113230550439

//    查询条件
    @Test
    void testCount() {
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
        lqw.eq(Book::getId,8);
        Book book = bookDao.selectOne(lqw);
        System.out.println(book);
    }

范围查询

image-20231113231447730

模糊查询

image-20231113231648949

likeleft就是 %在左边

图中的意思是以 j 结尾的

字段映射和表明映射

image-20231114173846413

@Data                   //包含上面的所有,但是没有构造器的两个
@TableName("tbl_Book")
public class Book {
​
    private Integer id;
    private String type;
    private String name;
    @TableField(value = "description")      //注释说明该字段在数据库表中的名字是  description
    private String description;
    @TableField(exist = false,select = false)
    // exist 注释说明该字段在数据库表中不存在  select = false 说明该字段敏感,比如密码,不能被查询
    private String no;
​
​
}

id生成策略

image-20231114160841844

image-20231114163957268

image-20231114173635880

可以用配置文件

多数据删除

image-20231114174043984

image-20231114174327236

逻辑删除

image-20231114211348420

image-20231114211805241

加一个delect字段 0就是没删除 1就是删除

乐观锁

大概是两千条以下数据

这个修改需要version的值,所以不能为空

image-20231115143329104

image-20231115143348652

image-20231115143359405

image-20231115143438043

代码生成器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值