• 进行Spring和Mybatis整合,需要了解一下SqlSessionFactory以及SqlSession的生命周期,前者是应用范围,全局范围只有一个工厂,使用单例模式来实现这个功能,直接交给Spring来完成即可,后者它内部含有一块数据区域,存在线程不安全的问题,所以应该将sqlsession声明到方法内部。其次我们所要求的dao实现类或者mapper的代理类都可以交给Spring来统一管理。现在就从最初的dao方式来实现Mybatis和Sping之间的整合。
  • 现在通过一个小小的查询功能来进行整合验证。

  • 第一步导入jar包 
    Mysql的驱动包 
    Mybatis的核心包和依赖包 
    Mybatis和spring的整合包 
    Spring的包 
    dbcp数据库连接池包或者C3P0数据连接池

  • 因为这只是一个小小的测试,所以本人在只是建立了一个简单的user表,生成的po类为如下
public class User {private int id;private String username;private String sex;private Date birthday;private String address;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建dao和实现类

public interface UserDao {public User findUserById(int id) throws Exception;
}
  • 1
  • 2
  • 3
    public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {public User findUserById(int id) throws Exception {return this.getSqlSession().selectOne("test.findUserById", id);}在实现类我们还继承了SqlSessionDaoSupport,从关联源码,我们知道它提供了SqlSessionget和set 方法 public org.apache.ibatis.session.SqlSession getSqlSession();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 现在开始搭建一系列的配置文件,从小到大的配置文件说起,创建一个User.xml查询的配置文件
    <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test"><!-- 根据用户ID查询用户信息 --><select id="findUserById" parameterType="int" resultType="com.itsky.ms.po.User">SELECT* FROM USER WHERE id =#{id}</select>
</mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

创建一个mybatis的全局配置文件SqlMapConfig.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><!-- 加载映射文件 --><mappers><mapper resource="config/User.xml" /></mappers>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

需要在scr目录下创建一个applicationContext.xml文件,顺带还得创建db.properties和log4j.properties等文件。

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "><!-- 加载java的配置文件 --><context:property-placeholder location="config/db.properties" /><!-- 创建数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${db.driver}" /><property name="url" value="${db.url}" /><property name="username" value="${db.username}" /><property name="password" value="${db.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- SqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 指定mybatis的全局配置文件的路径 --><property name="configLocation" value="config/SqlMapConfig.xml"></property><!-- 数据源 --><property name="dataSource" ref="dataSource"></property></bean></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

这样环境就搭建好了,测试一下

    private ApplicationContext ctx;@Beforepublic void setUp() throws Exception {ctx = new ClassPathXmlApplicationContext("applicationContext.xml");}@Testpublic void testFindUserById() throws Exception {UserDao dao = (UserDao) ctx.getBean("userDao");User user = dao.findUserById(1);System.out.println(user);}这里因为全部由Spring管理,测试也就按照Spring框架的规则去执行就好。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

结果

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
User [id=1, username=rose, sex=girl, birthday=Sun Mar 22 00:00:00 CST 2017, address=chnia]
  • 1
  • 2
  • 3
  • 4

总结:首先把要做的事情先梳理一遍,分出第一步第二步,就比如我们刚才用传统方式整合,就是用传入一个id进行数据的查询,那么我们可以先把思路理一遍,固定的东西有一张表、一个表的对应类,一个dao包对应的一个实现包,大致就可以把java代码全部写完了。然后就可以专心配置xml文件,从小的配起,接口类需要我们用mybatis提供的xml文件进行配置,也就是说有两个xml文件需要写,一个是查询的xml(…),一个是配置的xml(),最后配置全局配置文件,也就是applocationContext.xml(….).

Mybatis整合Spring之传统dao方法相关推荐

  1. MyBatis整合Spring原理分析

    目录 MyBatis整合Spring原理分析 MapperScan的秘密 简单总结 假如不结合Spring框架,我们使用MyBatis时的一个典型使用方式如下: public class UserDa ...

  2. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  3. Mybatis——Mybatis整合Spring详解

    mybatis-spring官网 1. MyBatis整合Spring实现 我们首先实现MyBatis和Spring的整合操作. 1.1 添加相关的依赖 这些是整合的依赖,不包括其他分页插件等依赖. ...

  4. 【Mybatis+spring整合源码探秘】--- mybatis整合spring事务原理

    文章目录 1 mybatis整合spring事务原理 1 mybatis整合spring事务原理 本篇文章不再对源码进行具体的解读了,仅仅做了下面一张图: 该图整理了spring+mybatis整合后 ...

  5. MyBatis整合Spring的实现(2)

    2019独角兽企业重金招聘Python工程师标准>>> 分析 MyBatis整合Spring的实现(1)中代码实现的4.1可以知道,XMLConfigBuilder类读取MyBati ...

  6. Mybatis整合spring

    整合思路 1.SqlSessionFactory对象应该放到spring容器中作为单例存在. 2.传统dao的开发方式中,应该从spring容器中获得sqlsession对象. 3.Mapper代理形 ...

  7. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

    http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...

  8. MyBatis(五)MyBatis整合Spring原理分析

    前面梳理了下MyBatis在单独使用时的工作流程和关键源码,现在看看MyBatis在和Spring整合的时候是怎么工作的 也先从使用开始 Spring整合MyBatis 1.引入依赖,除了MyBati ...

  9. mybatis整合spring下的的各种配置文件

    1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  10. MyBatis整合Spring的实现(13)

    2019独角兽企业重金招聘Python工程师标准>>> 本章中分析insert元素的解析. 1 配置文件 <insert id="insert" param ...

最新文章

  1. python 错误、调试、单元测试、文档测试
  2. python支持什么操作方式_python模拟点击常用的操作方法有哪些?
  3. 水木告白工作室:Java从零入门之模仿头条资讯(一)
  4. 这几款前端必备构建工具合辑,我们帮你整理好了!
  5. C#元组类型System.ValueTuple
  6. devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...
  7. 上海区块链会议演讲ppt_所以您想参加会议演讲吗? 这是我的建议。
  8. matlab7.0安装说明
  9. linux编译lnx文件命令_linux命令dd
  10. 洛谷——P1590 失踪的7
  11. Qt之QFileIconProvider
  12. canvas实现背景图和二维码合并-生成海报
  13. 支持团队开发的UML建模和CASE工具MagicDraw
  14. mysql英雄联盟卡_MySQL学习之路:爬取英雄联盟数据后续使用
  15. plc仿真实训软件_博途STEP7仿真软件与真实PLC的区别
  16. 游戏主机转换器方案可适配土星/MD1/MD2/NGC/N64/SFC/SNES等主机
  17. 常见的短信群发平台,短信群发平台分类
  18. 【软考中级-网工】1
  19. 【实战篇】——keras合并多个模型
  20. eureka心跳_8个Eureka优化技巧,让效率提高10倍

热门文章

  1. 2019南京网络赛 I Washing clothes —— 神级思维
  2. Protobuf的直白理解
  3. [SPDK/NVMe存储技术分析]
  4. 3-7数据链路层-设备
  5. 机器视觉学习,从零开始
  6. 外卖小哥帮程序员写代码,走红网络!除此之外,还有他!
  7. 联发科山寨崛起,却成台湾手机产业掘墓人
  8. Android studio 37 下载网络图片 并显示
  9. 为任意版本的Windows 10离线安装.net 3.5
  10. 微软披露大规模网络钓鱼活动详细信息