1.参考书籍:《深入浅出MyBatis技术原理与实战》

2.知识基础:Spring、Mybatis、Spring MVC。

配置数据源

配置SqlSessionFactory

  SqlSessionFactory的作用是生成SqlSession。

  org.mybatis.spring.SqlSessionFactoryBean类负责读取数据源和Mybatis的配置文件路径。解析配置文件后连同数据源一起保存在Spring Bean里面

<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!--驱动类名 -->
<property name="driverClass" value="${mysql.driver}" />
<!-- url -->
<property name="jdbcUrl" value="${mysql.url}" />
<!-- 用户名 -->
<property name="user" value="${mysql.username}" />
<!-- 密码 -->
<property name="password" value="${mysql.password}" />
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->
<property name="acquireIncrement" value="${mysql.acquireIncrement}"></property>
<!-- 初始连接池大小 -->
<property name="initialPoolSize" value="${mysql.initialPoolSize}"></property>
<!-- 连接池中连接最小个数 -->
<property name="minPoolSize" value="${mysql.minPoolSize}"></property>
<!-- 连接池中连接最大个数 -->
<property name="maxPoolSize" value="${mysql.maxPoolSize}"></property>
</bean>
<!--3 会话工厂bean sqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置文件路径 -->
<property name="configLocation" value="classpath:MyBatisCfg.xml"></property>
<!-- 数据源 -->
<property name="dataSource" ref="datasource"></property>
<!-- sql映射文件路径 -->
<property name="mapperLocations" value="classpath*:com/xdsux/spring2/mapping/*Mapper.xml"></property>
</bean>

数据源使用C3P0数据源,具体参数单独用一个db.properties配置。

Spring在初始化IOC容器的时候将初始化SqlSessionFactoryBean。

映射文件路径可以在这一步配置,也可以在Mybatis配置文件中配置。

<configuration>
<!-- 指定数据库连接信息的位置 -->
<properties resource="db.properties"></properties>
<settings>
<!--指定mybatis使用日志组件 -->
<setting
name="logImpl"
value="LOG4J2" />
<!--开启全局的二级缓存 -->
<setting
name="cacheEnabled"
value="false" />
<!--开启延时加载,如果有关联关系,则默认不会获取数据 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。
在association中指定fetchType="eager(立即)" 或者 lazy(延迟) 默认:false -->
<setting
name="lazyLoadingEnabled"
value="true" />
<!--true时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载; false,每种属性将会按需加载。 默认为:true -->
<setting
name="aggressiveLazyLoading"
value="false" />
</settings>
<!--类型别名,默认引入com.xdsux.spring2.entities下的所有类 -->
<typeAliases>
<package name="com.xdsux.spring2.entities" />
</typeAliases>
<!-- <environments default="development"> <environment id="development">
<transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver"
value="${driver}" /> <property name="url" value="${url}" /> <property name="username"
value="${username}" /> <property name="password" value="${password}" /> </dataSource>
</environment> </environments> <mappers> 引入映射文件 <mapper resource="com/xdsux/spring2/mapping/GoodsMapper.xml"
/> </mappers> -->
</configuration>

environments、mappers在Spring那里已经配置了,所以这里注释掉了。<setting>还有更多设置,再说。

其实Spring IOC已经可以配置非常多的属性了,但是遇到复杂的配置时,建议使用MyBatis的配置文件,因为一般实际项目中,Spring的配置文件已经相当复杂了。配置在Mybatis中更便于管理,可读性也更高。

配置SqlSessionTemplete

一般使用SqlSessionFactoryBean就可以了,但在定制化编程时可以配置SqlSessionTemplete。

配置Mapper

   <!--4 自动扫描对象关系映射 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!-- 指定要自动扫描接口的基础包,实现接口 -->
<!-- <property name="basePackage" value="com.xdsux.spring2.mapper"></property> -->
<property name="basePackage" value="com.xdsux.spring2.dao"></property>
</bean>

Mapper只是接口,不是实现类。

Spring-MyBatis通过MapperFactoryBean作为中介,动态代理生成实现类。他有三个参数:

mapperInterface:用于制定接口,其继承者就被认为时一个Mapper

SqlSessionFactory:SqlSessionTemplete属性不被配置时,该属性将被设置

SqlSessionTemplete:这个属性被设置的时候,SqlSessionFactory属性作废。

Spring-Mybatis项目通常采用的配置:

MapperScannerConfiger:采用自动扫描的形式配置映射器。

配置事务处理

MyBatis-Spring使用Spring AOP管理事务:

 <!--5 声明式事务管理 -->
<!--定义事物管理器,由spring管理事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"></property>
</bean>
<!--支持注解驱动的事务管理,指定事务管理器 -->
<tx:annotation-driven transaction-manager="transactionManager" />

【MyBatis-Spring】Mybatis和并入Spring框架的更多相关文章

  1. Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

    在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...

  2. SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程

    1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One  ...

  3. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  4. Maven+Spring+Mybatis+Security+Mysql简短的框架

    一段时间想搞个框架做开发,但是网上好多代码建立的都太杂乱.有的开源的东西我感觉用不了.本人太笨,不懂怎么上传到github上,就写在博客里,留作记录.以后用的时候也方便. 1.首先让我们看一下项目结构 ...

  5. 【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

    #[整理]JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系 ![关系图解](http://images.cnitblog.com/blog/84 ...

  6. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)

    java-websocket该建筑是easy.儿童无用的框架可以在这里下载主线和个人教学好java-websocket计划: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...

  7. 整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...

  8. 最优雅SSM框架:SpringMVC + Spring + MyBatis

    在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码! SpringMVC:它用于web层,相当于con ...

  9. springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

    自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用 ...

  10. Spring+Mybatis+Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

随机推荐

  1. Win10 安装SqlServer2012 无法访问数据库

    win10系统,安装好vs2017,sqlserver2012, 在abp     执行 Update-Database 会出错 具体解决办法是SqlServer2012的1433端口没打开. 打开办 ...

  2. springboot + schedule

    参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ...

  3. 发现一个好工具RenderDoc

    逛VULKAN官网时,工具中提到RenderDoc这个东西,百度了下,是专为图形程序员用的,可以集成到VS,或U3D中,收藏先. 参考链接

  4. Unix shell范例精解 课后题

    1.read  #屏幕输入read name  #输入名字 2.echo #在终端打印出内容echo "What is your name ?"  # What is your n ...

  5. spring中Constructor、@Autowired、@PostConstruct的顺序

    其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入.所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入 ...

  6. 算法之Python实现 - 000

    Python的火热已极,几乎人人在学Python,为了节约时间,也为了实现Python的代码量,计划从今天开始,将<算法与数据结构题目最优解>一书中的代码全部用Python实现.

  7. CCNA学习视频

    CCNA:链接:https://pan.baidu.com/s/1aiZC4pbYIu9qJSWcVfKwWw 提取码请私信楼主

  8. docker原理(转)

    可能是把Docker的概念讲的最清楚的一篇文章 [编者的话]本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. Docker是世 ...

  9. linux查看进程已经运行了多长时间

    ps -eo lstart 启动时间 ps -eo etime 运行多长时间. ps -eo pid,lstart,etime | grep 717

  10. Idea书签管理器的使用

    1. 添加书签 以光标所在的行,为落点, 方式一: F11 , 添加一个默认的书签 方式二:Crtl + Shift + 数字 , 添加一个带编号 的书签 2. 查看书签 方式一:Shift + F1 ...