http://blog.csdn.net/qq598535550/article/details/51703190

二、Spring整合mybatis其实是在mybatis的基础上实现Spring框架

    1、依赖的jar包,maven引入依赖:

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.3</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.43</version></dependency><!--****************************************************--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.2.2.RELEASE</version></dependency><!--织入的包--><dependency><groupId> org.aspectj</groupId ><artifactId> aspectjweaver</artifactId ><version> 1.8.7</version></dependency><!--添加数据源--><!--spring JDBCTemplate--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.2.0.RELEASE</version></dependency><!--druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.18</version></dependency><!--dbcp 数据源--><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!--c3p0--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!--spring整合mybatis--><!--Mybatis+Spring整合--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.0</version></dependency>

  简化依赖:webmvc

  Spring整合Myabtis依赖的:

<!--spring整合mybatis--><!--Mybatis+Spring整合--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.0</version></dependency>

  2、编写核心配置文件(mybatis的许多功能都可以使用Spring来完成)

  mybatis-config.xml的很多功能可以移除

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--核心配置文件的根节点-->
<configuration><typeAliases><package name="cn.tengyu.entity"/></typeAliases><mappers><package name="cn.tengyu.dao"/></mappers>
</configuration>

  mapper.xml不用修改

<?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="cn.tengyu.dao.EmpMapper"><cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/><!--查询记录数--><select id="count" resultType="int">SELECT count(1) AS count FROM emp</select><!--查询列表--><select id="findAll" resultType="Emp">SELECT <include refid="empColumn"/> FROM emp</select><sql id="empColumn">empno,empname,deptno</sql><!--方法(1)--><!--<resultMap id="DeptResult" type="Dept"><id property="deptno" column="deptno"/><result property="deptname" column="deptname"/></resultMap><resultMap id="EmpResult" type="Emp"><id property="empno" column="empno"/><result property="empname" column="empname"/><association property="dept" javaType="Dept" resultMap="DeptResult"/></resultMap><select id="findByIndex" resultMap="EmpResult">SELECT emp.*,dept.* FROM emp,dept WHERE emp.deptno=dept.deptno LIMIT #{startIndex},#{endIndex}</select>--><!--方法(2)--><!--<resultMap id="EmpResult" type="Emp"><id property="empno" column="empno"/><result property="empname" column="empname"/><association property="dept" javaType="Dept"><id property="deptno" column="deptno"/><result property="deptname" column="deptname"/></association></resultMap><select id="findByIndex" resultMap="EmpResult">SELECT e.empno,e.empname,d.deptno,d.deptname FROM emp e,dept d WHERE e.deptno=d.deptno LIMIT #{startIndex},#{endIndex}</select>--><!--方法(3)--><resultMap id="EmpResult" type="Emp"><id property="empno" column="empno"/><result property="empname" column="empname"/><association property="dept" javaType="Dept"><id property="deptno" column="deptno"/><result property="deptname" column="deptname"/></association></resultMap><select id="findByIndex" resultMap="EmpResult">SELECT e.empno,e.empname,d.deptno,d.deptname FROM emp AS e,dept AS d WHERE e.deptno=d.deptno LIMIT #{startIndex},#{endIndex}</select>
</mapper>

View Code

  applicationContext.xml添加功能,即Spring接管mybatis里面的SqlSessionFactory等Bean的实现

<?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:p="http://www.springframework.org/schema/p"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"><!--通过bean元素生命需要Spring创建的实例。该实例的类型通过class属性指定,并通过id属性为该实例制定一个名称,以便于访问--><!--引入数据库配置文件--><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="database.properties"/></bean><!--配置数据源--><!--<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--alibaba--><!--<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--dbcp--><!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--c3p0--><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><!--引入Mybatis文件--><bean class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:mybatis-config2.xml"/></bean><!--mapper--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.tengyu.dao"/></bean><!--service--><bean id="deptService" class="cn.tengyu.service.impl.DeptServiceImpl"><property name="dao" ref="deptMapper"/></bean><!--加入事务--><bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!---->
</beans>

    3、service的实现依然使用私有接口属性

  4.数据源可以灵活使用

<!--引入数据库配置文件--><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="database.properties"/></bean><!--配置数据源--><!--<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--alibaba--><!--<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--dbcp--><!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><!--c3p0--><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>

View Code

  5.mapper的使用很简单

<!--引入Mybatis文件--><bean class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:mybatis-config2.xml"/></bean><!--mapper--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.tengyu.dao"/></bean><!--service--><bean id="deptService" class="cn.tengyu.service.impl.DeptServiceImpl"><property name="dao" ref="deptMapper"/></bean>

  测试:

@Testpublic void findAll(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");IDeptService deptService = (IDeptService) context.getBean("deptService");List<Dept> list = deptService.findAll();for (Dept o :list) {logger.debug(o.getDeptno()+"\t"+o.getDeptname());}}@Testpublic void Test02(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");IDeptService deptService = (IDeptService) context.getBean("deptService");Dept dept = new Dept();dept.setDeptname("测试部");int i = deptService.addDept(dept);logger.debug("执行"+i+"条数据!");}

注:另外需要灵活使用Spring的AOP进行事务控制

转载于:https://www.cnblogs.com/tengqiuyu/p/7704824.html

Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)相关推荐

  1. Spring学习笔记之MyBatis

    系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...

  2. spring学习笔记06-spring整合junit(出现的问题,解决的思路)

    spring学习笔记06-spring整合junit(出现的问题,解决的思路) 文章目录 spring学习笔记06-spring整合junit(出现的问题,解决的思路) 3.1测试类中的问题和解决思路 ...

  3. 【Spring学习笔记 九】Spring声明式事务管理实现机制

    什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用,关乎数据准确性的地方我们一定要用到事务,防止业务逻辑出错. 什么是事务管理,事务管理对于企业应用而言至 ...

  4. Spring 学习笔记----->AOP

    Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...

  5. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  6. JavaEE——Spring学习笔记01【Ioc开发的模式】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  7. CHY的Spring学习笔记---师从动力节点王鹤老师(B站白嫖)

    Spring学习笔记 核心技术:ioc和aop ioc:使用di(依赖注入)实现控制反转,底层使用的是反射机制 spring可以创建自己写的类的对象,也可以创建非自定义对象,只要知道类的全限定名即可. ...

  8. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  9. Spring学习笔记(三) AOP_annotation,AOP_XML

    在学习课程以前,听说AOP有种很神秘的感觉,好像很好深的技术.其实原理很简单,使用动态代理的方式给程序增加逻辑.与此相似的有struts2中的filter拦截器. 再讲AOP之前先把需求说一下: 同S ...

  10. spring学习笔记01-BeanFactory和ApplicationContext的区别

    spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别           BeanFa ...

最新文章

  1. php内置的数组函数大全,php数组的内置函数大全
  2. dvwa详解_DVWA(六):XSSReflected 反射型XSS全等级详解
  3. 我从创建具有仅仅一年编码经验的视频游戏中学到了什么
  4. 带你掌握4种Python 排序算法
  5. C#学习笔记——委托机制
  6. shiro学习笔记:remeberMe,多次登录锁死账号
  7. 阿里旺旺垃圾消息分析及解决方案探讨
  8. JAVA系列-设计模式-中介者模式
  9. 计算机打印机副机无法打印,局域网打印机无法打印怎么办 局域网打印机无法打印解决方法...
  10. BIOS与UEFI以及模拟环境
  11. 【软考软件评测师】第五章节 安全测试测试方法
  12. pv uv vv cv 的区别
  13. 《那些年啊,那些事——一个程序员的奋斗史》——50
  14. tensorflow2.0 基于LSTM模型的文本生成
  15. FFmpeg - Windows下使用MSYS2和VS编译FFmpeg
  16. (64)-- 爬取58同城网页信息
  17. linux上如何搭建Java环境
  18. 搭建React项目,超简单教程
  19. 阿里巴巴总裁马云经典语录。
  20. c语言房屋销售管理信息系统

热门文章

  1. C语言math.h中的常用函数实例详解
  2. 常考数据结构与算法-manacher算法
  3. 数据结构-荷兰国旗问题
  4. 操作系统一:内核态的开销
  5. python四十二:类和对象
  6. 专访阿里云MVP王俊杰:开发者的超能力是用技术让世界更美好
  7. Algs4-1.4.12找出两个有序数组的公共元素-方法1
  8. 从功能测试到性能测试的转型之路
  9. Java IO: 网络
  10. 使用libvirt管理kvm(virsh篇)