SSM和springboot的知识

MyBatis

定义

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。

描述

MyBatis 提供了与数据库交互的接口,开发者可以通过编写 SQL 语句和映射文件,将 Java 对象与数据库表进行映射。它简化了 JDBC 的使用,并允许开发者专注于 SQL 语句的编写,而无需处理繁琐的数据库连接和结果集处理。

ORM

定义

ORM 是一种编程技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。ORM 在概念上将数据库中的表与面向对象编程语言中的类相对应,表中的记录与类的对象相对应。

描述

ORM 的主要目的是将数据库中的表映射为面向对象编程语言中的类,使得开发者可以使用面向对象的方式来操作数据库。它隐藏了数据库的复杂性,使开发者能够更加专注于业务逻辑的实现。

半自动化

MyBatis 被视为一个半自动化的 ORM 框架,因为它要求开发者编写 SQL 语句,并手动映射 SQL 语句的结果到 Java 对象。相比之下,全自动化的 ORM 框架(如 Hibernate)会自动生成 SQL 语句,并处理结果映射,而无需开发者手动编写。

对比

优点

  • 灵活性:允许开发者编写自定义的 SQL 语句,适应复杂查询和特殊需求。
  • 性能:由于 SQL 语句是手动编写的,通常能够提供更好的性能优化。
  • 集成性:更容易与现有的数据库和表结构集成。

缺点

  • 维护成本:需要开发者编写和维护 SQL 语句,增加了维护成本。
  • 学习曲线:对于初学者来说,学习 MyBatis 的使用可能需要一些时间。

使用步骤

  1. 添加依赖:将 MyBatis 的相关依赖添加到项目中。
  2. 创建数据库连接信息:在配置文件中配置数据库的连接信息。
  3. 编写映射文件:定义 SQL 语句和结果映射。
  4. 编写 Java 接口:定义数据访问方法。
  5. 创建 SqlSessionFactory:使用配置文件创建 SqlSessionFactory 对象。
  6. 获取 SqlSession:从 SqlSessionFactory 获取 SqlSession 对象。
  7. 执行 SQL:使用 SqlSession 对象执行 SQL 语句,获取结果。
  8. 关闭 SqlSession。

配置文件

MyBatis 的配置文件通常是一个 XML 文件,用于配置数据库连接信息、事务管理器、别名等。配置文件中可以包含多个数据源的配置,以及每个数据源的映射文件路径等信息。

映射文件

基本结构

<mapper namespace="com.example.MyMapper">
<!-- SQL 语句和结果映射定义 -->
</mapper>

常用增删改查标签

  • <select>:用于定义查询语句。
  • <insert>:用于定义插入语句。
  • <update>:用于定义更新语句。
  • <delete>:用于定义删除语句。

接收参数

  • 使用 #{} 语法来接收参数。
  • 可以通过 @Param 注解为参数命名。

返回结果

  • 使用 <resultMap> 定义结果映射。
  • 可以使用 <result><association><collection> 等标签来映射结果。

缓存

  • MyBatis 支持一级缓存和二级缓存。
  • 一级缓存是基于 SqlSession 的,二级缓存是基于 namespace 的。

关联

  • 使用 <association> 标签处理一对一关联。
  • 使用 <collection> 标签处理一对多关联。

动态SQL

  • 使用 <if><choose><when><otherwise> 等标签实现动态 SQL。
  • 可以根据条件动态生成 SQL 语句。

Spring

定义

Spring 是一个开源的 Java 平台,它提供了一套全面的编程和配置模型,用于构建企业级应用。Spring 的主要目标是简化企业应用开发的复杂性,通过提供非侵入式的编程方式,使开发者能够专注于业务逻辑的实现,而无需过多关注底层的实现细节。

描述

Spring 框架是一个分层架构,由多个模块组成,每个模块都提供了特定的功能。Spring 的核心功能包括依赖注入(DI)、面向切面编程(AOP)、数据访问抽象、事务管理等。Spring 还提供了许多其他的特性,如安全性、消息传递、计划任务等。此外,Spring 框架还支持与其他流行框架的集成,如 MyBatis、Hibernate 等。

IOC

定义

控制反转是一种设计原则,用于降低代码之间的耦合度。通过将对象的创建和依赖关系的管理交给外 部容器(如 Spring 容器)来负责,而不是由对象自身来控制,从而实现了控制权的反转

描述

在传统的编程模型中,对象通常会自行创建和管理其依赖的其他对象。而在使用 Spring 框架后,这 些依赖关系由 Spring 容器来管理。开发者只需在配置文件中或通过注解声明依赖关系,而无需在代 码中显式地创建和管理这些对象。这种方式不仅简化了代码,还提高了代码的可维护性和可扩展性。

DI

定义

依赖注入是控制反转的一种实现方式。通过依赖注入,Spring 容器负责将依赖对象注入到需要它们的 对象中。

描述

在 Spring 中,依赖注入通常通过构造函数注入或属性注入来实现。构造函数注入是通过在构造函数 的参数中声明依赖对象来实现的;而属性注入则是通过在类的属性上添加注解(如 @Autowired)来实 现的。Spring 容器在创建对象时会自动处理这些依赖关系,并将相应的对象注入到目标对象中。

AOP:

声明式事务

Spring 提供了声明式事务管理,允许开发者通过配置或注解的方式声明事务的边界,而无需在 代码中显式地编写事务管理的逻辑。这种方式简化了事务管理的过程,提高了代码的可读性和 可维护性。

拦截器

在 Spring AOP 中,拦截器(也称为切面)用于定义横切关注点(如日志记录、安全检查等)。 拦截器可以拦截到目标方法的调用,并在调用前后执行一些额外的逻辑。通过这种方式,开发 者可以将横切关注点与业务逻辑分离开来,使代码更加清晰和易于维护。

整合MyBatis:步骤

  1. 添加依赖:在项目中添加 Spring 和 MyBatis 的相关依赖。
  2. 配置数据源:在 Spring 配置文件中配置数据库连接信息,包括数据源的类型、驱动类名、连接 URL、用户名和密码等。
  3. 配置 SqlSessionFactory:创建 SqlSessionFactory 对象,并配置其相关的属性,如数据源、映射文件位置等。
  4. 配置 Mapper:将 MyBatis 的 Mapper 接口与相应的 XML 映射文件关联起来,以便 Spring 容器能够管理这些 Mapper。
  5. 使用 Mapper:在需要使用 MyBatis 进行数据库操作的地方,通过注入的方式获取 Mapper 对象,并调用其方法进行数据库操作。

常用注解

  • @Autowired:用于自动注入依赖对象。
  • @Qualifier:当存在多个同类型的 Bean 时,用于指定注入哪一个 Bean。
  • @Resource:与 @Autowired 功能类似,但来源于 JSR-250 规范。
  • @Component:用于将类标记为一个 Spring 组件,让 Spring 容器自动扫描并创建其实例。
  • @Service:用于标记服务层的组件。
  • @Repository:用于标记数据访问层的组件。
  • @Controller:用于标记控制层的组件。
  • @Transactional:用于声明事务边界。
  • @Aspect:用于标记一个切面类。
  • @Pointcut:用于定义一个切入点表达式,指定哪些方法将被拦截。
  • @Before@After@Around@AfterReturning@AfterThrowing:用于定义不同类型的通知(Advice),指定在切入点方法执行前后或出现异常时执行的逻辑。

MVC

定义

是一种常用的软件设计模式,特别适用于Web应用程序的开发。它有助于将应用程序的表示逻辑(View)、业务逻辑(Controller)和数据逻辑(Model)分离开来,以提高代码的可维护性和可扩展性。

开发步骤

  1. 需求分析:明确应用程序的功能需求。
  2. 设计数据库模型:设计数据库表结构,建立实体类(Entity)。
  3. 创建JavaBeans:定义实体类(Entity)以映射数据库表。
  4. 创建数据访问层(DAO层):使用MyBatis或类似框架,定义Mapper接口和映射文件来访问数据库。
  5. 创建业务逻辑层(Service层):实现业务逻辑,并注入(调用)数据访问层(DAO层)的Mapper接口。
  6. 创建控制器(Controller层):使用Servlet或Spring MVC的Controller类来处理用户请求,注入(调用)业务逻辑层(Service层)。
  7. 创建视图(View层):使用JSP和模板技术创建用户界面。
  8. 配置请求映射:在web.xml或Spring MVC配置文件中配置URL请求映射到相应的Controller。
  9. 处理Ajax请求:在Controller层中处理Ajax请求,并返回相应的JSON或XML数据。
  10. 实现拦截器(Filter/Interceptor):创建Filter或Spring MVC的Interceptor来处理公共功能,如权限检查、日志记录等。
  11. 测试与部署:进行单元测试、集成测试和系统测试,然后将应用程序部署到Web服务器。

模型:JavaBean

  1. 定义实体类(Entity):根据数据库表结构,创建对应的JavaBean实体类。
  2. 数据访问层(DAO层):
    • 创建Mapper接口,定义数据访问方法。
    • 创建MyBatis映射文件(XML),实现SQL语句与Mapper接口的映射。

SpringBoot

定义

SpringBoot是一个开源的Java框架,它基于Spring框架,旨在简化Spring应用的初始搭建以及开发过程。通过提供一套默认的、生产就绪的配置,SpringBoot能够帮助开发者快速构建独立的、基于Spring的生产级应用。

描述

SpringBoot通过提供自动配置、内嵌的Web服务器(如Tomcat、Jetty)、无代码生成和XML配置要求,以及对大量生产级库的默认配置,使得开发者能够快速地构建出生产级别的Spring应用。同时,它还提供了一个命令行工具,可以轻松地创建Spring应用。

与Spring关系

SpringBoot是基于Spring框架的,它是Spring生态体系中的一个子项目。

区别

传统的Spring项目需要开发者手动配置大量的XML文件以及解决各种依赖关系,而SpringBoot则通过自动配置和约定优于配置的原则,大大简化了这些过程。

优势

  • 快速构建:通过自动配置和起步依赖,开发者可以快速地创建出应用。
  • 简化配置:SpringBoot通过约定优于配置的原则,为开发者提供了大量的默认配置,减少了配置的工作量。
  • 内嵌服务器:SpringBoot内置了Web服务器,使得应用可以独立运行,无需部署到外部服务器。
  • 监控和管理:SpringBoot提供了强大的监控和管理功能,如健康检查、指标监控等。

基本步骤

  1. 创建项目:使用SpringBoot的命令行工具或IDE插件创建项目。
  2. 添加依赖:在项目的pom.xml文件中添加所需的起步依赖。
  3. 编写代码:编写业务逻辑代码。
  4. 运行应用:使用Maven或Gradle构建并运行应用。

原理:

启动器

SpringBoot的启动器是一个特殊的JAR包,它包含了构建某个类型的应用所需的所有依赖。 例如,spring-boot-starter-web包含了构建Web应用所需的所有依赖。

自动配置

SpringBoot根据类路径中的jar包、类、以及各种属性设置来自动配置项目。例如, 如果在类路径中检测到H2数据库,那么SpringBoot会自动配置一个内存数据库。

约定优于配置

SpringBoot在自动配置时,会采用大量的默认设置。这些默认设置基于广泛接受的“约定 优于配置”的原则,使得开发者无需进行繁琐的配置。

项目启动

SpringBoot应用通常有一个主类,这个主类使用@SpringBootApplication注解,并调用 SpringApplication.run()方法来启动应用。

数据访问:

MyBatis

MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。 SpringBoot可以与MyBatis很好地集成,通过配置和编写Mapper接口及映射文件来实现 数据库操作

JPA

JPA(Java Persistence API)是Java平台的一个持久化规范,它提供了数据库操作的标准 接口。SpringBoot默认集成了Hibernate作为JPA的实现,开发者可以通过实体类和 Repository接口来实现数据库操作。

MyBatis-Plus

MyBatis-Plus是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开 发、提高效率而生。它提供了许多实用的功能,如自动填充、分页插件、性能分析等。

表示层:

整合JSP开发

整合JSP开发:SpringBoot可以与JSP整合进行Web开发。通过添加相应的起步依赖和配置,  开发者可以在SpringBoot应用中使用JSP作为视图模板。

中间件:

Redis

  • Redis:Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。SpringBoot可以很容易地与Redis集成,通过添加相应的起步依赖和配置,开发者可以在应用中使用Redis作为缓存或消息代理。

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值