因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。

需要的jar包

mybatis-3.0.6.jar

mybatis-spring-1.0.2.jar

要点:

1.在spring中配置mybatis工厂类

2.在dao层使用spring注入的的工具bean对数据进行操作

整合时,可以有四种方式来使用mybatis进行数据处理。

spring 中必须的配置。

spring的配置文件中加入以下内容

  1. <!-- MyBatis配置 -->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  3. <property name="dataSource" ref="c3p0DataSource" />
  4. <property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" />
  5. <property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" />
  6. <property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" />
  7. </bean>

1.SqlSessionFactoryBean (必需)

就是中间件所需的处理类

2.dataSource  (必需)

spring中数据源引用

3.configLocation  (可选)

Mybatis自身的配置文件,一般用来声明别名

4.mapperLocation  (可选)

mybatis的映射文件

5.typeAliasesPackage (可选)

要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明

使用mybatis进行数据处理的四种方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)

不同方式的特点

  1. SqlSessionTemplate  这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制
  2. SqlSessionDaoSupport   这个只需要在实现类中继承特殊类就可以使用sqlsession
  3. MapperFactoryBean  这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类
  4. MapperScannerConfigurer  这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,无需写实现类
  • SqlSessionTemplate
  1. 配置文件加入新配

    1. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    2. <constructor-arg index="0" ref="sqlSessionFactory" />
    3. <constructor-arg index="1" value="BATCH" /><!--- 如果想要进行批量操作可加入这个属性 ->
    4. </bean>
  2. 注入sqlsession()
    1. @Reasource //使用spring3的注解注入
    2. private SqlSession sqlSession;
  3. 使用sqlsession来进行操作
    1. public User getUser(String userId) {
    2. return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
    3. }
  • SqlSessionDaoSupport(sqlSessionFactory会被spring自动装配,不需要手动注入)
  1. 继承SqlSessionDaoSupport类

    1. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
    2. }
  2. 使用getSqlSession()方法取sqlSession来进行数据处理
    1. public User getUser(String userId) {
    2. return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
    3. }
  • MapperFactoryBean
  1. 写配置文件,引入每个DAO接口

    1. <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    2. <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
    3. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    4. </bean>
  2. 在业务层可直接注入dao的接口进行操作
  • MapperScannerConfigurer
  1. 写配置文件,配置包名将自动引入包中的所有接口

    1. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    2. <property name="basePackage" value="org.mybatis.spring.sample.mapper" />
    3. </bean>
  2. 在业务层可直接注入DAO接口操作,注入时使用的是接口名,其首字母小写
  3. 注意:如果有别的实现类,其提供的名称如果是接口名,且首字母小写,则会在启动时出现冲突错误

mybatis和spring3.1整合的更多相关文章

  1. Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码)

    Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码) 备注: 之前在Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合中 ...

  2. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  3. 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

    在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...

  4. Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决

    今天遇到了跟下面文章一模一样的问题,下面文章的解决方案很好,在这里记录保存一下. Spring3+MyBatis3整合无法输出SQL语句问题的解决

  5. MyBatis+Spring+Spring MVC整合开发

    MyBatis+Spring+Spring MVC整合开发课程观看地址:http://www.xuetuwuyou.com/course/65课程出自学途无忧网:http://www.xuetuwuy ...

  6. SSM :MyBatis与Spring的整合

    MyBatis与Spring的整合 一:Spring整合MyBatis的准备工作: (1.)在项目中加入Spring,ByBatis及整合相关的jar文件 (2.)建立开发目录结构,创建实体类 (3. ...

  7. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  8. mybatis与spring的整合(代码实现)

    mybatis与spring的整合(代码实现) 需要jar包: mybatis核心包:依赖包:log4j包:spring croe;beans;tx;aop;aspects;context;expre ...

  9. MyBatis高级篇之整合ehcache缓存框架

    MyBatis高级篇之整合ehcache缓存框架  2017-09-01  0 Comments  1,671 Views  0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供 ...

随机推荐

  1. 工具:linux 性能监控工具-nmon

    nmon 下载:http://pan.baidu.com/s/1jICoSpo 放到linux下可以直接运行. nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新. n ...

  2. 找个输入IPoint在某个FeatureClass上距离最近的要素

      /// <summary> /// 得到输入点在输入图层上的最近点 /// </summary> /// <param name="randomPoints ...

  3. 重学C++ (1)

    写在开头的话:这学期没有写太多的代码,终于把中英文两篇论文弄完了,趁着中间的空隙,想想找工作的处境.自己也定了自己的方向.不管学什么语言吧,每个语言都有自己的优势和使用的群体.只要自己是良马,终会有伯 ...

  4. LCD/LED/OLED/等离子显示器区别

    LCD液晶显示器: LCD(Liquid Crystal Display),其构造是在两片平行的玻璃当中放置液态的晶体(液晶),在玻璃后面,以CCFL冷光灯管(类似日光灯)作背光源.液晶的成像原理可以 ...

  5. Java 多线程 锁 存款 取款

    http://jameswxx.iteye.com/blog/806968 最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: ja ...

  6. JS实现图片翻书效果示例代码

    js 图片翻书效果.  picture.html  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  ...

  7. CCNP第三天 EIGRP综合实验

    实验题如图所示:其中R2连R3 R5为快速以太网线,其他均为串线,帧中继默认是富曼斯(全连网状结构),即所有接入的路由之间的PVC都已经打通,所有  要关闭R5和R8的逆向arp功能,来手工配置R5到 ...

  8. IP HELPER GetAdaptersAddresses 函数

    自己做的一些笔记,XP以及以后的系统使用: MSDN 函数:http://msdn.microsoft.com/en-US/library/windows/desktop/aa365915(v=vs. ...

  9. Django1.6添加comments应用的简单过程

    今天尝试为自己开发的博客加上评论功能,查看Django的文档,发现1.6之后Django不再自带comments这个app了,下面是官方文档上的说明: Django’s comment framewo ...

  10. 不得不知道的Python字符串编码相关的知识

    开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII character 'ascii' codec can't encode characters in posi ...