SSM框架整合以及知识整理笔记–boot
文章目录
一、整合所需依赖
<?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.3.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.zzcfirst</groupId>
<artifactId>test-1</artifactId>
<version>0.0.1</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/generator/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
二、SSM的整合(配置类方式)
1、创建Web配置类加注解(若需要配置需要的内容例如拦截器)
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
}
2、创建其他配置类(如安全配置类等)
3、在启动类上添加扫描Mapper接口的注解
@SpringBootApplication
@MapperScan("cn.zzcfirst.test1.dao")
public class Test1Application {
public static void main(String[] args) {
SpringApplication.run(Test1Application.class, args);
}
}
4、编写配置文件
server:
port: 8889
spring:
application:
name: test1
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/test?nullCatalogMeansCurrent=true&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: 552310
driver-class-name: com.mysql.cj.jdbc.Driver
logging:
level:
cn.zzcfirst: debug
mybatis:
type-aliases-package: cn.zzcfirst.test1.domain.entity
configuration:
map-underscore-to-camel-case: true
三、重要注解参照
基本配置类(通用注解)
注解名称 | 作用 |
---|---|
@Configuration | 指定标明的类为配置类 |
@ComponentScan(basePackages={“cn.zzcfirst.mapper”}) | 将指定包中的组件添加到容器中 |
@MapperScan(basePackages = {“cn.zzcfirst.mapper”}) | 将指定包dao层Mapper接口添加到容器中 |
@Bean | 声明方法为创建bean的方法 |
@Scope(value=“single”) | 指定bean的作用范围 |
@Import(DaoConfig.class) | 导入另一个配置类 |
特殊配置类
注解名称 | 作用 |
---|---|
@EnableWebMvc | 开启自定义WebMvc配置 MVC配置类 |
@EnableTransactionManagement | 开启声明式事务支持 事务配置类 |
@EnableAspectJAutoProxy | 开启Aop代理 AOP配置类 |
@EnableWebSecurity | 1、加载了WebSecurityConfiguration配置类, 配置安全认证策略。 2、加载了AuthenticationConfiguration, 配置了认证信息。Security配置类 |
@EnableWebMvcSecurity | 开启MVC程序认证 Security配置类 |
@EnableJpaRepositories(value = “packagename”) | 指定包中的接口是Repository接口 SpringBoot完成自动配置不需要此注解 JPA配置类 |
SpringWebMvc注解
注解名称 | 作用 |
---|---|
@RestController | 声明该类是一个RestController组件(ResponseBody) |
@Controller | 声明该类是一个普通的Controller(返回值会经过视图解析器) |
@RequestMapping("/path") | 声明在方法上面标明访问路径 |
@GetMapping("/") @PostMapping("/") @PutMapping("/") @DeleteMapping("/") | 声明在方法上表明访问路径和指定的访问方式 |
@RequestHeader(“key”) | 获取指定key对应的请求头信息 |
@CookieValue(“key”) | 获取指定key值对应的value值 |
@RequestParam(“valuename”) | 获取接收的对应valuename的参数值 |
@PathVariable(“valuename”) | 获取指定路径上{valuename}对应的参数值 |
@ResponseBody | 将返回的值变为实体(json串)或其他 |
@RequestBody | 将传入的json串等变为java实体类 |
Service层组件注解
注解名称 | 作用 |
---|---|
@Service | 服务层组件注解 |
@Transactional | 开启声明式事务的注解 |
Dao层组件注解
注解名称 | 作用 |
---|---|
@Mapper | 声明该组件是一个dao层接口 |
@Repository | 声明该组件是一个dao层组件 |
AOP相关注解
注解名称 | 作用 |
---|---|
@Component | 声明该类是一个组件 |
@Aspect | 声明该类是一个切面类 |
@Pointcut(“execution(*.TestController.show(…))”) | 声明该方法是一个切面方法 |
@Before(value = “method()”) | 前置通知 获取传入参数方法如下图 |
@After(value = “method()”) | 后置通知 |
@AfterReturning(value = “method()”) | 返回通知 |
@AfterThrowing(value = “method()”) | 异常通知 |
@Around | 环绕通知 |
SpringSecurity注解
注解名称 | 作用 |
---|---|
@AuthenticationPrincipal | 在Controller方法上添加注解@AuthenticationPrincipal User user即可自动注入用户相关信息。 |
四、MybatisMapper的使用
添加依赖生成实体类即可 SpringBoot会完成自动配置
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
五、MybatisMapper通用代码生成器的使用
1、加依赖(Maven插件依赖)
在plugins标签下面添加
org.mybatis.generator和maven-compiler-plugin
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/generator/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
2、在指定文件目录下创建插件配置文件
配置文件内容如下
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<properties resource="generator/config.properties"/>
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
</plugin>
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.user}"
password="${jdbc.password}">
</jdbcConnection>
<javaModelGenerator targetPackage="cn.zzcfirst.domain.entity"
targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources"/>
<javaClientGenerator targetPackage="cn.zzcfirst.dao"
targetProject="src/main/java"
type="XMLMAPPER"/>
<table tableName="${tableName}">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
相关属性说明
<properties resource="generator/config.properties"/>
指定了属性文件位置
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.user}"
password="${jdbc.password}">
</jdbcConnection>
配置JDBC连接属性
<javaModelGenerator targetPackage="cn.zzcfirst.domain.entity"
targetProject="src/main/java"/>
指定实体类的位置(所在包)
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources"/>
指定sql映射文件生成位置
<javaClientGenerator targetPackage="cn.zzcfirst.dao"
targetProject="src/main/java"
type="XMLMAPPER"/>
指定mapper接口生成的位置
<table tableName="${tableName}">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
指定对应的表名
对应属性文件
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_oasys?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
jdbc.user=root
jdbc.password=552310
tableName=Emp