接上一章节继续SSM整合按步骤详解(清晰的思路加代码)从零开始一步步整合【一】

上面讲了Spring和SpringMVC的整合,现在开始下一步,先来搭建一下MyBatis的环境

我们先来看看目录结构图

首先需要配置文件,名字随意,我这里叫做MyBatisConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--外部引入jdbc配置文件--><properties resource="jdbcConfig.properties"/><!-- 配置实体类别名,默认别名为类的字母(不区分大小写)--><typeAliases><package name="com.lp.domain"/></typeAliases><!--配置环境--><environments default="localhost"><environment id="localhost"><transactionManager type="JDBC"/><!-- 配置数据库连接信息 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--配置dao接口所在位置--><mappers><package name="com.lp.dao"/></mappers></configuration>

上面所需要的jdbc配置文件写一下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=962464

现在可以编写一下AccountDao的映射文件了,在这里面编写CRUD代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lp.dao.AccountDao"><!--如果实体类命名与数据库不一致就需要resultMap--><resultMap id="accountMap" type="Account"><id property="id" column="id"/><result property="name" column="name"/><result property="password" column="password"/></resultMap><select id="findAll" resultMap="accountMap">select * from account;</select><insert id="saveAccount" parameterType="Account">insert into account(name ,money)values(#{name},#{money});</insert>
</mapper>

到这一步,MyBatis的环境搭建好了,开始测试一下是都搭建成功

package com.lp.test;import com.lp.dao.AccountDao;
import com.lp.domain.Account;
import com.lp.service.AccountService;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;/*** @Date 2020/6/6 12:00* @Author luopeng*/
public class TestMyBatis {@Testpublic void testFindAll() throws IOException {InputStream in = Resources.getResourceAsStream("MyBatisConfig.xml");SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession = factory.openSession();AccountDao accountDao = sqlSession.getMapper(AccountDao.class);for (Account account : accountDao.findAll()) {System.out.println(account);}sqlSession.close();in.close();}@Testpublic void testSaveAccount() throws IOException {InputStream in = Resources.getResourceAsStream("MyBatisConfig.xml");SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession = factory.openSession();AccountDao accountDao = sqlSession.getMapper(AccountDao.class);Account account = new Account();account.setName("张三");account.setMoney(5000D);accountDao.saveAccount(account);sqlSession.commit();sqlSession.close();in.close();testFindAll();}
}

只要上述操作都成功了,说明MyBatis环境搭建成功了!

注意,如果是从上一篇文章下载的同志,记得最后出错的原因是:我的c3p0连接池版本太低了,我去看了看,05年的,我最后Google,找到原因,换到了下面的版本

 <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version></dependency>

现在开始,我们就要进行Spring和MyBatis的整合了,整合完成,整个项目就完成了

其实很简单,就是把原本需要MyBatis做的事情交给Spring来做,目的是为了把工厂生成的代理对象交给Spring来管理
首先,application.xml中我们需要以下的配置,注释步骤很明白的

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--开启自动扫描 --><context:component-scan base-package="com.lp"><!--配置哪些不扫描--><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--Spring整合MyBatis框架--><!--jdbc配置文件引入Tomcat部署项目,src/main/resources目录下的配置文件默认位置为:{项目名}/WEB-INF/classes,而Spring却在项目根目录下寻找,肯定找不到,因此,配置时指定classpath目录下寻找。--><context:property-placeholder location="classpath:jdbcConfig.properties"/><!--配置连接池--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean><!--配置SqlSessionFactory工厂,这一步是为了将MyBatis在工厂中生成的代理对象放在Spring容器中--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--给实体类取别名--><property name="typeAliasesPackage" value="com.lp.domain"/></bean><!--配置AccountDao接口所在包--><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.lp.dao"/></bean><!--    配置Spring框架声明式事务管理--><!-- spring中基于XML的声明式事务控制配置步骤1、配置事务管理器2、配置事务的通知此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的使用tx:advice标签配置事务通知属性:id:给事务通知起一个唯一标识transaction-manager:给事务通知提供一个事务管理器引用3、配置AOP中的通用切入点表达式4、建立事务通知和切入点表达式的对应关系5、配置事务的属性是在事务的通知tx:advice标签的内部--><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!--配置事务通知--><tx:advice id="txAdvice" transaction-manager="transactionManager"><!-- 配置事务的属性isolation:用于指定事务的隔离级别。默认值是DEFAULT,表示使用数据库的默认隔离级别。propagation:用于指定事务的传播行为。默认值是REQUIRED,表示一定会有事务,增删改的选择。查询方法可以选择SUPPORTS。read-only:用于指定事务是否只读。只有查询方法才能设置为true。默认值是false,表示读写。timeout:用于指定事务的超时时间,默认值是-1,表示永不超时。如果指定了数值,以秒为单位。rollback-for:用于指定一个异常,当产生该异常时,事务回滚,产生其他异常时,事务不回滚。没有默认值。表示任何异常都回滚。no-rollback-for:用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时事务回滚。没有默认值。表示任何异常都回滚。--><tx:attributes><tx:method name="*" propagation="REQUIRED"/><tx:method name="find*" read-only="true" propagation="SUPPORTS"/><tx:method name="get*" read-only="true" propagation="SUPPORTS"/><tx:method name="select*" read-only="true" propagation="SUPPORTS"/></tx:attributes></tx:advice><!--配置AOP--><aop:config><!--配置切入点表达式--><aop:pointcut id="pt1" expression="execution(* com.lp.service.impl.*ServiceImpl.*(..))"/><!--配置事务通知与切入点表达式的对应关系 --><aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/></aop:config></beans>

如果觉得太多了,可以把他分开配置,比如说,你要配置Spring和MyBatis的整合文件,你可以命名为spring-mybatis.xml,最后你最关键的一点记得在web.xml中让它能加载这个配置文件。当然事务管理的我们也可以单独来一个spring-service啦!
我踩过的坑在注释中有记录,也有提醒!

整合完毕,下面可以开始测试了!测试怎么测都行,你就在前端页面写一个表单什么的来测试保存功能,跳转用来测试一下查询所有嘛,最后测试成功,完结!

SSM整合压缩包已上传!

二、SSM整合按步骤详解(清晰的思路加代码)从零开始一步步整合【二】(完结)相关推荐

  1. 一、SSM整合按步骤详解(清晰的思路加代码)从零开始一步步整合【一】

    Spring SpringMVC MyBatis,对于这三者的整合,我们先一步步来分析 首先,我们要明确一点,是通过Spring来整合SpringMVC,Spring来整合MyBatis 我们先来做一 ...

  2. poi导出excel清晰 步骤详解

    [align=center][size=large][color=red][b]poi导出excel清晰 步骤详解[/b][/color][/size][/align] [color=darkblue ...

  3. SAP UI5 初学者教程之二十六 - OData 服务配合 Mock 服务器的使用步骤详解试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  4. 3c认证是什么,3C认证的6个步骤详解

    3C认证的6个步骤详解: 3C认证步骤1: 授权委托和申请办理(提早3个月搞好申请办理材料): 1.<产品描述表>:团队承担给予产品的基本上信息,包含原材料信息.制作工艺.经销商等. 3C ...

  5. 数学建模二:TOPSIS法(优劣解距离法) 附代码详解

    数学建模二:TOPSIS法(优劣解距离法)附代码详解 TOPSIS法(优劣解距离法)用于评价类问题. 层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案.同时层次分析法也难以处理已 ...

  6. mysql 获取当前整点_Oracle 生成未来三天的整点时间(步骤详解)

    需求:X坐标轴时间都为整点时间,展示未来三天内的预测(x轴展示未来三天的整点时间),每3个小时一个刻度,横坐标共计24个刻度 步骤一:取当前时间 SELECT SYSDATE FROM DUAL 步骤 ...

  7. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔 ...

  8. python画三维平面-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  9. centos6 安装 mantisbt-1.2.8 —— (1) VMware Workstation 12 Pro 虚拟机安装步骤详解(window 10 系统)

    对于目前主流之一的VMware 虚拟机而言,一直是各位小伙伴的首选,而VMware 12 Pro 是截止目前最新的VMware Workstation 版本:偶在这里特地给刚刚入坑的小伙伴详细介绍介绍 ...

最新文章

  1. pytorch之卷积模块、池化、激活函数(可视化)
  2. 下属能否提拔,关键就看这10条!庸才是毒瘤,宁可错杀不可错用
  3. 第一次用写一个3d轮播
  4. linux snmp设置报警次数,CentOS/RHEL 6下禁止重复的SNMP连接日志
  5. 爬取智联招聘(面向对象)
  6. hive mysql 字符集_Hive字符编码
  7. CodeForces - 868F Yet Another Minimization Problem
  8. postgresql 字符串拼接||“的使用
  9. VS对.ini文件的操作
  10. HDU1561 The more, The Better(树形dp)
  11. 人口各省预测模型matlab_基于MATLAB的人口预测模型
  12. 使用来自文件“***.snk”的公钥对输出签名时出错
  13. 计算机如何寻址硬盘,再来理解一下硬盘
  14. Unity_7 如何使用遮挡剔除Occlusion Culling
  15. MacOS 使用SwitchHosts修改 hosts 不生效的原因及解决方法
  16. matlab实现降低图片的分辨率
  17. 三星A7100手机更换电池方法拆电池方法
  18. 基于《高级计算机图形学原理与实践》(西安科技大学)的学习笔记(一、二)
  19. Flask: 总是报too many values unpacked
  20. C语言零碎知识点之定义指针时星号靠近类型名还是变量名

热门文章

  1. 暴雪战网协议更新:代练及第三方交易均违规
  2. HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
  3. 超级管理员这样的特权账号存在哪些安全风险
  4. 视觉效果制作流程(The Visual Effects Pipeline译)——Andrew Whitehurst
  5. 禁用免费版小红伞的弹窗广告
  6. 视频教程-逆向工程:游戏安全入门教程-漏洞挖掘与利用
  7. EAIDK-610 板卡目录
  8. []转]武侠名字算法
  9. Polygon Studios元宇宙:时尚产业将被NFT颠覆
  10. Cursor代码编辑器的使用