一、环境搭建
1、引入整合依赖
1)Mybatis依赖
mysql、druid、mybatis、mybatis-spring整合依赖
2)Spring依赖
spring-webmvc、spring-aspect、spring-test、spring-orm(整合,自动依赖tx和jdbc)
3)日志依赖
log4j-slf4j-impl(需要添加log4j2.xml文件)
4)其他依赖
junit、jackson-databind(ajax数据json解析)
<dependencies><!--mybatis--><dependency><!--mysql依赖--><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><dependency><!--druid依赖--><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><dependency><!--mybatis依赖--><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version></dependency><dependency><!--mybatis整合依赖--><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.4</version></dependency><!--spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><!--orm整合依赖,会自动依赖tx和jdbc--><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><!--aop编程--><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><!--测试--><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><!--单元测试--><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--spring5日志--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.13.3</version></dependency><!--ajax-json--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.4</version></dependency><dependencies>
2、项目结构搭建

二、Mybatis整合
1、步骤
1)引入jdbc.properties配置文件
2)配置注解 @MapperScan 扫描包
3)配置注解 @Import 引入其他配置类
3)创建数据源
3)创建SqlSessionFactoryBean
2、数据源配置
数据源配置步骤:
1、获取类加载器对象,并在类路径中获取数据库连接资源文件
使用Druid的DataSources,所以数据库连接资源文件中的key符合druid.xxx
2、创建一个Properties对象,加载所有数据库连接资源到配置对象
3、创建一个DruidDataSource对象,将自动从配置对象中获取属性对象
SqlSessionFactoryBean配置步骤(方法传入参数DruidDataSource):
1、创建一个SqlSessionFactoryBean对象
2、配置数据源
3、开启支持驼峰命名
4、获取SqlSessionFactory对象
@Configuration@MapperScan(basePackages = "com.qt.mapper")@Import(SpringService.class) // 引入其他配置类public class SpringMybatis {@Beanpublic DruidDataSource getDataSoruce() {DruidDataSource dataSource = null;// 获取类加载器对象,并在类路径中获取资源文件InputStream is = SpringMybatis.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties pp = new Properties();try {pp.load(is); // 加载所有资源配置到配置对象dataSource = new DruidDataSource();dataSource.configFromPropety(pp); // 自动从配置对象中获取属性对象,资源文件需要符合规则druid.xx} catch (IOException e) {e.printStackTrace();}return dataSource;}@Beanpublic SqlSessionFactory getSqlSessionFactory(DruidDataSource dataSource){SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);// mybatis的总配置,由当前factory的属性配置替代,通过mybatis的Configuration类设置原信息org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true); // 驼峰命名转换factoryBean.setConfiguration(configuration);SqlSessionFactory sessionFactory = null;try {sessionFactory = factoryBean.getObject();} catch (Exception e) {e.printStackTrace();}return sessionFactory;}}
三、日志整合
配置文件中,可根据需要将级别设置为error去除多余的信息,同时指定包名以打印需要显示的类的日志
四、Spring事务
事务:访问并可能更新数据库数据的一个程序执行单元
四大属性:
原子性:事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用
一致性:一旦所有事务动作完成,事务就被提交,保持数据和资源的一致性,与原子性密切相关
隔离性:多个事务处理相同的数据,但是每个事务是互不干扰,互相隔离的
持久性:事务完成提交后,任何操作和错误都无法改变所修改的数据
配置spring服务层:
1、扫描服务层组件
2、添加事务处理
1)声明spring管理事务管理器对象DataSourceTransactionManager
2)开启事务注解支持(在服务层类或方法上添加事务注解,默认策略:非只读事务)

添加事务后,当对数据库进行多条数据操作时,若中间出现异常,则整个事务不会提交,则即使之前已经有正常运行的操作,也不会对数据进行任何修改(事务回滚)
五、SpringMvc整合
web.xml配置:
1、创建监听器,通过监听器创建spring父容器,加载服务层和持久层配置
spring提供的用于监听servlet容器加载的类
tomcat启动会自动调用方法contextInitialized初始化一个web环境下的spring父容器
默认会读取xml创建一个spring web应用容器
父容器是唯一的,其他子容器会自动引入父容器依赖——setContext(父容器)
2、配置容器初始化的时候的参数
AnnotationConfigWebApplicationContext:基于注解方式创建一个spring的web应用父容器
这里由于SpringMybatis引入了其他配置类,所以只需要添加SpringMybatis配置类就行了
2、创建spring子容器
配置类配置:
1、扫描控制层(包扫描)
2、开启mvc注解支持
使用注解 @EnableWebMvc
3、实现 WebMvcConfigurer 接口,复写configureDefaultServletHandling方法
4、开启静态资源放行
5、自定义视图解析器(可不设置),匹配前缀和后缀
