SSM框架整合注解配置方式笔记
文章目录
一、整合所需依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.zzcfirst</groupId>
<artifactId>oasystem</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>oasystem Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>5.2.10.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<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>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>oasystem</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
</plugins>
</pluginManagement>
<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>
</build>
</project>
二、SSM的整合(配置类方式)
1、创建配置类 分别对应Controller层 Service层 Dao层
2、添加相应的注解
3、在配置类中配置相关类以及其属性
4、创建DispatcherServletInitializer初始化类
WebMvcConfig类
@Configuration
@ComponentScan(basePackages = {"cn.zzcfirst.controller"})
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
//视图解析器类
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver
= new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".html");
return viewResolver;
}
/*也可以配置thymeleaf视图解析器需要以下依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
*/
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver
= new SpringResourceTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
}
/**
* 配置模板引擎
*/
@Bean
public TemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver{
SpringTemplateEngine templateEngine =
new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
/**
* 配置Thymeleaf模板视图解析器
*/
@Bean
public ViewResolver viewResolver(SpringTemplateEngine templateEngine){
ThymeleafViewResolver viewResolver =
new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine);
return viewResolver;
}
/**
* 配置静态资源处理
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
ServiceConfig类
@Configuration
@ComponentScan(basePackages={"cn.zzcfirst.service"})
@EnableTransactionManagement
//@EnableAspectJAutoProxy
@Import(DaoConfig.class)
public class ServiceConfig {
@Bean
public TransactionManager dataSourceTransactionManager(){
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(DaoConfig.druidDataSource());
return manager;
}
}
DaoConfig类
@Configuration
@ComponentScan(basePackages={"cn.zzcfirst.mapper"})
@MapperScan(basePackages = {"cn.zzcfirst.mapper"})
public class DaoConfig {
//配置DataSource
@Bean
public static DataSource druidDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUsername("root");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db_oasys?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8");
dataSource.setPassword("552310");
return dataSource;
}
//SqlSessionFactoryBean类
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(){
Resource[] resources = new Resource[]{
new ClassPathResource("mapper/ApplyMapper.xml"),
new ClassPathResource("mapper/DeptMapper.xml"),
new ClassPathResource("mapper/EmpMapper.xml"),
new ClassPathResource("mapper/AttendanceMapper.xml"),
};
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setMapperLocations(resources);
sqlSessionFactoryBean.setDataSource(druidDataSource());
sqlSessionFactoryBean.setTypeAliasesPackage("cn.zzcfirst.domain.entity");
return sqlSessionFactoryBean;
}
//配置接口包映射类
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage("cn.zzcfirst.mapper");
return mapperScannerConfigurer;
}
}
DispatcherServletInitializer类
public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{ServiceConfig.class,DaoConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[]{new CharacterEncodingFilter("utf-8")};
}
}
三、重要的类以及属性
Dao层
MapperScannerConfigurer(tk.mybatis.spring.mapper.MapperScannerConfigurer)
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| SqlSessionFactoryBeanName | SqlSessionFactory的引用bean id | SqlSessionFactoryBean类的引用id |
| basePackage | Mapper接口所在的包 | 传入接口所在包的包名即可 |
SqlSessionFactoryBean
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| configLocation | 配置mybatis主配置文件的路径 | classpath:配置文件所在路径 |
| mapperLocations | 配置mapper映射文件的路径 | classpath:配置文件所在路径 支持ant风格*.xml |
| typeAliasesPackage | 设置包中类启用别名 | 传入包名即可 |
| dataSource | 设置数据源 | 传入数据源的引用 |
DataSource
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| username | 数据库用户名 | |
| password | 数据库密码 | |
| url | 数据库url | |
| driverClassName | 数据库驱动类名 |
Service层
DataSourceTransactionManager
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| dataSource | 数据源 | 使用ref引用数据源即可 |
Controller层
DispatcherServlet
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| contextConfigLocation | 指定SpringMVC配置文件路径 | classpath:*.xml ant风格路径配置 |
| contextClass | 指定加载SpringMVC配置文件的类 | 全类名 |
ContextLoaderListenner
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| contextConfigLocation | 指定Spring配置文件路径 | classpath:*.xml ant风格路径配置 |
| contextClass | 指定加载Spring配置文件的类 | 全类名 |
CharacterEncodingFilter
| 属性名 | 作用 | 配置格式 |
|---|---|---|
| encoding | 指定编码方式 | utf-8 |
四、MybatisMapper的使用
1、添加依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
2、使用tk包下的MapperScannerConfigurer代替org包下的对应类
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage("cn.zzcfirst.mapper");
return mapperScannerConfigurer;
}
配置属性不变
五、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=1111111
tableName=Emp
3、启动Maven插件即可

这篇笔记详细介绍了SSM框架(Spring、SpringMVC、Mybatis)的注解配置整合过程,包括配置类的创建、依赖的添加、重要类及属性的解析,如WebMvcConfig、ServiceConfig、DaoConfig等。同时,讲解了如何在Dao层使用MybatisMapper,以及MybatisMapper通用代码生成器的配置和使用方法。
5253

被折叠的 条评论
为什么被折叠?



