1. 整合的工程结构

首先我们来看下整合之后的工程结构是什么样的。

2. 配置文件

在于spring整合之前,mybatis都是自己管理数据源的,然后sqlSessionFactory是我们自己去注入的,现在整合了,这些都要交给spring来管理了,来看一下beans.xml文件中的配置:

跟spring和hibernate整合的情况差不多,都是通过properties文件加载数据库连接信息,然后导入配置文件配置一下sessionFactory,下面看看db.properties和SqlMapConfig.xml文件。

3. dao方式开发的配置

在最开始我们提到,mybatis中有两种开发方式,一种dao开发方式,一种mapper开发方式,后者用的比较多,但是不排除没有使用dao方式的,所以两种我都总结一下,首先看dao方式开发的配置。

1)配置User.xml

在sqlMap包中有个User.xml,里面是针对用户的操作的一些配置,这里是整合,所以我就写了一个statement,如下:

只是通过id查询用户,如果测试成功,说明整合成功,这里写完了后,别忘了在SqlMapConfig.xml中加载这个映射文件,但是上面已经加载过了,即。

2)开发dao及其实现类

接下来就是开发dao及其实现类了,就一个方法,通过id查询用户,先来看下dao的方法:

再看下实现类:

这里是重点:通过dao方式开发的话,dao的实现类在实现接口的同时,需要继承SqlSessionDaoSupport类,这个类中有获取SqlSession的方法,因为sqlSessionFactory已经在beans.xml文件中配置好了(下面有写),spring会自动注入进去,继承了SqlSessionDaoSupport类就可以直接通过getSqlSession()方法来获取sqlSession。然后就可以操作数据库了。

3)配置dao

上面也说了,要获取sqlSession必须得有sqlSessionFactory才行啊,这就需要spring来注入了,所以我们在beans.xml中配置一下该dao:

这样的话,dao开发方式就整合好了,下面来测试一下。

4. mapper方式开发的配置

mapper方法开发的话,mapper.xml和mapper.java文件要放在一个包下,这里主要放在ssm.mapper的包下了,下面看一下两个文件:

1)UserMapper.xml和UserMapper.java

这个和之前的都一样,没什么难度,注意xml中的namespace要写成对应的java文件的完全限定名即可。

2)配置beans.xml

上面已经配置好了mapper的映射和接口了,那么如何由spring来产生一个代理对象呢?spring是通过MapperFactoryBean来创建代理对象的,看下面的配置:

从配置中可以看出,使用MapperFactoryBean来产生mapper的代理对象,首先要配置一个mapperInterface,即你要spring产生哪个mapper接口对应的代理对象,所以肯定要把我们刚刚写好的mapper接口的完全限定名给传进去,spring就知道要创建对应的代理对象了。当然,sqlSessionFactory是必不可少的,否则怎么产生sqlSession呢?

但是问题来了,如果有很多个mapper接口咋整?那beans.xml中难道要写很多个这样的bean么?答案肯定不是这样,我们可以在beans.xml中通过扫描包即可,即告诉spring,你把指定的包中所有的mapper接口都给我生成一个代理对象出来,如下:

从上面的配置中可以看出,spring使用MapperScannerConfiger来进行mapper扫描的。要想扫描成功,必须遵循之前说的规范:即mapper.xml和mapper.java两个文件名必须保持一致,且在同一个目录下。这样的话,自动扫描出来的mapper的bean的id就为mapper类名的首字母小写。所以上面的bean没有id属性,因为这个是根据具体的mapper接口来的。basePackage是用来指定要扫描的包。这样就可以批量扫描mapper接口了。

到这里,spring和mybatis就整合好了。

学习相关推荐(编程必备辅助):

①:搜索关注公众号“只会写BUG”,分享更多干货知识,资讯,教程等

②:海量编程类资料零基础到高级亟待领取!!!

如果觉得对你有一丢丢帮助,麻烦动动你的小手指【关注】一下上面的公众号吧,或者【转发】让更多人看到该文章。大家也可积极后台给我留言,多多交流,共同进步。

spring boot mybatis 整合_MyBatis学习:MyBatis和Spring整合相关推荐

  1. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  2. Spring Boot (八): Mybatis 增强工具 MyBatis-Plus

    1. 简介 在上一篇文章<Spring Boot (七): Mybatis极简配置> 中我们介绍了在 Spring Boot 中 Mybatis 的基础使用方式,其中有一部分美中不足的是 ...

  3. Spring Boot (二)集成Mybatis、Druid

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot (二)集成Mybatis.Druid,标记地址: https ...

  4. MyBatis构架设计学习------MyBatis的整体架构

    一.基础框架图 二.各模块的基本作用 --------------------基础支持层-------------------- 1.反射模块 MyBatis的反射模块中专门对原生的java反射进行了 ...

  5. spring boot 及微服务 学习笔记

    最近在进行项目架构的调整,准备从springmvc转换到spring cloud,也就是微服务框架.自然就需要将原有的项目转化为spring boot形式. 微服务 在了解spring boot之前, ...

  6. spring boot guava cache 缓存学习

    http://blog.csdn.net/hy245120020/article/details/78065676 ****************************************** ...

  7. Spring Boot 官方文档学习(一)入门及使用

    Spring Boot 官方文档学习(一)入门及使用 个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问 ...

  8. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean  就是我们定义的bean无法进行注入,那到底是什 ...

  9. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在学习此小节之前您可能还需要学习: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

  10. 60. Spring Boot写后感【从零开始学Spring Boot】

    从2016年4月15日到2016年7月20日经历长达3个月的时间,[从零开始学习Spring Boot]系列就要告一段落了.国内的各种资源都比较乱或者是copy 来copy去的,错了也不加以修正下,导 ...

最新文章

  1. CenterNet算法快速入门
  2. desc mysql 连表查询_Mysql连表查询
  3. android 判断是否是标点符号_Java 中文字符判断 中文标点符号判断
  4. 如何在代码中让按钮高亮_各种博客的代码高亮是如何实现的
  5. OpenCV矩形检测
  6. 【动画技巧】GIF动画转SWF小技巧
  7. 余承东感慨Mate系列:太艰辛了,质疑声太大
  8. 如何删除在Github中创建的项目
  9. android开发我的新浪微博客户端系列教程
  10. axis1.4 java.sql_web Service问题。。。用axis1.4求帮助
  11. 学习vue-router源码记录-1
  12. easyui下拉选项多怎么解决_作物根部病害多原因在哪?解决病害生根措施怎么做?...
  13. linux配置java环境变量(转)
  14. 10大白帽黑客专用的 Linux 操作系统
  15. charles 抓包图片显示_抓包修改工具(Charles)
  16. java 随机生成常用汉字_Java代码实现随机生成汉字的方法
  17. SQL注入原理及联合查询
  18. Android:光感自动调节亮度
  19. 36 选 7 彩票机选程序
  20. 人工智能小白日记之2准备篇

热门文章

  1. kerberos的故事2
  2. 高性能JavaScript模板引擎原理解析
  3. bootice添加linux_如何使用老毛桃winpe的Bootice新建SYSLINUX引导程序?
  4. python中count的作用_python中函数COUNT()的功能是什么
  5. php 控制器自动,ThinkPHP 新建控制器
  6. 二维数组 类型_「初识C语言」二维数组
  7. codeforces 1041a(水题)
  8. dsa java_将Java转换为python DSA签名
  9. html浏览器引擎表示,html – Web浏览器引擎和特殊字符呈现
  10. activemenu怎么拼 vue_vue-element-admin登录逻辑,以及动态添加路由,显示侧边栏