想要整合mybatis和spring,那么我们首先要知道这两个框架是干嘛的,对于mybatis我们前面几篇博客已经有了很详细的介绍,我们通过加载mybatis-configuration.xml 文件来产生SqlSessionFactory,然后通过SqlSessionFactory去产生sqlSession,我们在通过 sqlSession对数据库表所映射的实体类进行增删改查操作。而spring是干嘛的呢,简单来说,通过spring的DI和IOC,能帮助我们产生对象并管理对象的声明周期,而sprig的AOP也能帮助我们管理对象的事务。那么整合思路就很清晰了。
1、需要spring通过单例的方式管理 SqlSessionFactory,并用 SqlSessionFactory 去创建 sqlSession
2、持久层的 mapper 需要spring 管理
本篇所有源码链接:http://pan.baidu.com/s/1qYI5nLa 密码:cv81
1、创建mybatis-spring 工程,并导入相应的 jar 包(详情见上面源码)

2、在 spring 全局配置文件中 applicationContext.xml 中配置 SqlSessionFactory,以及数据源
①、我们将数据库配置信息写入classpath 目录的 db.properties 文件中
1 2 3 4 5 6 | |
②、在mybatis全局配置文件mybatis-configuration.xml 开启二级缓存,以及别名定义
7 8 9 10 11 12 13 14 15 16 17 18 19 | |
③、在 spring 全局配置文件中 applicationContext.xml 中配置 SqlSessionFactory,以及数据源
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | |
3、mapper 接口开发配置
①、创建 po 类
在com.ys.po包下创建 User.java
|
②、创建接口 UserMapper.java,以及UserMapper.xml 文件
必须满足以下四点:
|
UserMapper.java
|
UserMapper.xml
|
4、在 spring全局配置文件applicationContext.xml 中配置 mapper
|
测试:
|
从配置中可以看出,使用MapperFactoryBean来产生mapper的代理对象,首先要配置一个mapperInterface,即你要spring产生哪个mapper接口对应的代理对象,将mapper接口的全类名给传进去,spring就知道要创建对应的代理对象了,然后配置sqlSessionFactory,用来产生sqlSession。
但是我们发现,id="userMapper" 写死了,如果我们有很多 mapper 接口,那么我们每一个都需要配置吗?答案是不用的,我们可以不用配置 id 属性,然后加上包扫描配置,如下:
|
测试程序还是和上面一样,那么spring和mybatis整合就完美了。