SpringBoot2.x系列教程07--SpringBoot中以注解方式实现SSM整合

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 前言在上一章节中,壹哥 跟大家讲过,在SpringBoot项目中,我们有两种SSM整合的方式:● 1️⃣. XML方式;● 2️⃣. 注解两种方式。不知道现在你有没有掌握以XML文件方式进行的SSM整合呢?如果你有跟着我之前的文章编写了对应的代码,会发现以XML的实现方式实现SSM整合,虽然比传统的SSM整合过程简单,但是总感觉还是比较麻烦。所以接下来 壹哥 带大家再学习一种更简单的SSM整合方式,本节课咱们来学习以注解方式来实现SSM整合的过程。一. 以注解方式实现SSM整合1. 创建新的项目模块首先请参考我之前的文章,在之前的项目基础之上,创建一个新的module模块。在新的

前言

在上一章节中,壹哥 跟大家讲过,在SpringBoot项目中,我们有两种SSM整合的方式:

  • 1️⃣. XML方式;
  • 2️⃣. 注解两种方式。

不知道现在你有没有掌握以XML文件方式进行的SSM整合呢?如果你有跟着我之前的文章编写了对应的代码,会发现以XML的实现方式实现SSM整合,虽然比传统的SSM整合过程简单,但是总感觉还是比较麻烦。所以接下来 壹哥 带大家再学习一种更简单的SSM整合方式,本节课咱们来学习以注解方式来实现SSM整合的过程。

一. 以注解方式实现SSM整合

1. 创建新的项目模块

首先请参考我之前的文章,在之前的项目基础之上,创建一个新的module模块。在新的module模块中,请添加如下核心依赖包:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><dependencies><!-- web支持: 1、web mvc; 2、restful; 3、jackson支持; 4、aop ........ --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--spring-boot mybatis依赖:请不要使用1.0.0版本,因为不支持拦截器插件.--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><!--mybatis分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.3</version></dependency><!--简化bean代码--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>

2. 配置SpringBoot依赖插件

在SpringBoot中以注解方式实现SSM整合时,我们是可以把StudentMapper.xml这样的XML文件删除掉的,但是我们最好在pom.xml文件中设置一下,允许在Java中可以对XML进行识别编译,所以我们仍然需要配置如下项。

<build><!--注意:配置xml资源属性,允许java包下的xml文件可编译--><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

3. 配置application.properties文件

接下来我们可以配置自己的application.prpperties文件,在这里请各位修改成自己的数据库信息。

#数据源配置
spring.datasource.username=root
spring.datasource.password=syc
spring.datasource.url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis配置
mybatis.type-aliases-package=com.yyg.boot.domain

4. 编写StudentMapper接口方法

这里我们跟之前类似,还是编写一个Mapper接口类,但是这里我们没有了之前对应的Mapper.xml文件,dao层数据库的CRUD实现以注解方式来完成,这里涉及到了@Select注解,实际上还有@Insert、@Update、@Delete注解。

packagecom.yyg.boot.mapper;
importcom.yyg.boot.domain.Student;
importorg.apache.ibatis.annotations.Param;
importorg.apache.ibatis.annotations.Select;
importjava.util.List;
publicinterfaceStudentMapper {
/*** 以注解的方式实现ssm整合*/@Select("SELECT * FROM student")
List<Student>getAll();
@Select("SELECT * FROM student where id=#{id}")
StudentgetById(@Param("id") intid);
}

@Select():实现查询,参数是原生的查询SQL语句;

@Insert:实现添加,参数是原生的添加SQL语句;

@Update:实现修改,参数是原生的修改SQL语句;

@Delete:实现删除,参数是原生的删除SQL语句。

5. 编写service层实现类

根据三层架构的思想,我们还应该创建一个“com.yyg.boot.service”的包及其子包“impl”。

5.1 StudentService接口
我们在service包里面创建出一个StudentService接口。

packagecom.yyg.boot.service;
importcom.yyg.boot.domain.Student;
importjava.util.List;
publicinterfaceStudentService {
/*** 分页参数*/List<Student>getAll(IntegerpageNum, IntegerpageSize);
Studentget(Integerid);
}

5.2 StudentServiceImpl实现类
然后在impl包里面,创建出对应的StudentServiceImpl实现类。

packagecom.yyg.boot.service.impl;
importcom.github.pagehelper.PageHelper;
importcom.github.pagehelper.PageInfo;
importcom.yyg.boot.domain.Student;
importcom.yyg.boot.mapper.StudentMapper;
importcom.yyg.boot.service.StudentService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
importjava.util.List;
@ServicepublicclassStudentServiceImplimplementsStudentService {
@AutowiredprivateStudentMapperstudentMapper;
@OverridepublicList<Student>getAll(IntegerpageNum, IntegerpageSize) {
//在查询之前设置分页,利用Mybatis的分页插件实现分页PageHelper.startPage(pageNum, pageSize);
List<Student>list=studentMapper.getAll();
PageInfo<Student>info=newPageInfo<>(list);
returninfo.getList();
    }
@OverridepublicStudentget(Integerid) {
returnstudentMapper.getById(id);
    }
}

6. 编写web层接口

接着我们再创建出一个“com.yyg.boot.web”包,在该包里面创建一个StudentController类,在该类中创建一下Web接口。

packagecom.syc.boot.web;
importcom.syc.boot.domain.Student;
importcom.syc.boot.service.StudentService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.*;
importjava.util.List;
@RestController@RequestMapping("/stu")
publicclassStudentController {
@AutowiredprivateStudentServicestudentService;
@RequestMapping(value="/find", method=RequestMethod.GET)
publicList<Student>find(@RequestParam(name="pageNum",required=false,defaultValue="1") IntegerpageNum,@RequestParam(name="pageSize" ,required=false,defaultValue="20") IntegerpageSize) {
returnstudentService.getAll(pageNum,pageSize);
    }
@RequestMapping(value="/{id}", method=RequestMethod.GET)
publicStudentget(@PathVariable(name="id") Integerid) {
returnstudentService.get(id);
    }
}

7. 编写程序入口

最后我们在“com.yyg.boot”包的根目录下,创建一个程序入口类SSMApplication!这里一定要注意在该类上配置@MapperScan注解,扫描mapper接口文件所在包!

packagecom.yyg.boot;
importorg.mybatis.spring.annotation.MapperScan;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
/*** 以XML方式整合SSM.* MapperScan:扫描Mybatis接口文件*/@MapperScan("com.yyg.boot.mapper")
@SpringBootApplicationpublicclassSSMApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(SSMApplication.class, args);
    }
}

8. 项目包结构

最后,我们项目的核心配置与核心代码就都编写完毕了,整个项目的代码结构如下图所示:

二. 验证结果

接下来我们就把项目启动起来,看看SSM整合有没有实现。

1. 测试ssm整合及分页效果

我们通过启动入口类,把项目启动起来,进行测试。

2. 测试分页接口

仍然可以实现SSM整合,以注解的方式实现明显更简单一些!

结语

至此,我们就以注解的方式,实现了SSM整合功能。你会发现,以注解方式实现SSM整合比以XML方式更简单,基本上通过几个简单的配置就实现了。今天的内容你学会了吗?可以在评论区留言告诉我哦。

今日小作业:

以注解方式实现SSM整合,编写一个带有页面的学生信息管理功能。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
缓存 监控 Java
SpringBoot @Scheduled 注解详解
使用`@Scheduled`注解实现方法周期性执行,支持固定间隔、延迟或Cron表达式触发,基于Spring Task,适用于日志清理、数据同步等定时任务场景。需启用`@EnableScheduling`,注意线程阻塞与分布式重复问题,推荐结合`@Async`异步处理,提升任务调度效率。
590 128
|
3月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
452 0
|
3月前
|
Java 测试技术 API
将 Spring 的 @Embedded 和 @Embeddable 注解与 JPA 结合使用的指南
Spring的@Embedded和@Embeddable注解简化了JPA中复杂对象的管理,允许将对象直接嵌入实体,减少冗余表与连接操作,提升数据库设计效率。本文详解其用法、优势及适用场景。
307 126
|
4月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
420 2
|
3月前
|
Java 测试技术 数据库
使用Spring的@Retryable注解进行自动重试
在现代软件开发中,容错性和弹性至关重要。Spring框架提供的`@Retryable`注解为处理瞬时故障提供了一种声明式、可配置的重试机制,使开发者能够以简洁的方式增强应用的自我恢复能力。本文深入解析了`@Retryable`的使用方法及其参数配置,并结合`@Recover`实现失败回退策略,帮助构建更健壮、可靠的应用程序。
428 1
使用Spring的@Retryable注解进行自动重试
|
3月前
|
XML Java 数据格式
常用SpringBoot注解汇总与用法说明
这些注解的使用和组合是Spring Boot快速开发和微服务实现的基础,通过它们,可以有效地指导Spring容器进行类发现、自动装配、配置、代理和管理等核心功能。开发者应当根据项目实际需求,运用这些注解来优化代码结构和服务逻辑。
311 12
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
599 5
|
3月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
200 0
探索Spring Boot的@Conditional注解的上下文配置