九 spring和mybatis整合

1       spring和mybatis整合

1.1     整合思路

需要spring通过单例方式管理SqlSessionFactory。

spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)

持久层的mapper都需要由spring进行管理。

1.2     整合环境

创建一个新的java工程(接近实际开发的工程结构)

jar包:

mybatis3.2.7的jar包

spring3.2.0的jar包

mybatis和spring的整合包:早期ibatis和spring整合是由spring官方提供,mybatis和spring整合由mybatis提供。

全部jar包

1.3     sqlSessionFactory

在applicationContext.xml配置sqlSessionFactory和数据源

sqlSessionFactory在mybatis和spring的整合包下。

 1 <!-- 加载配置文件 -->
 2
 3    <context:property-placeholder location="classpath:db.properties" />
 4
 5
 6
 7    <!-- 数据源,使用dbcp -->
 8
 9    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
10
11       destroy-method="close">
12
13       <property name="driverClassName" value="${jdbc.driver}" />
14
15       <property name="url" value="${jdbc.url}" />
16
17       <property name="username" value="${jdbc.username}" />
18
19       <property name="password" value="${jdbc.password}" />
20
21       <property name="maxActive" value="10" />
22
23       <property name="maxIdle" value="5" />
24
25    </bean>
26
27
28
29
30
31    <!-- sqlSessinFactory -->
32
33    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
34
35       <!-- 加载mybatis的配置文件 -->
36
37       <property name="configLocation" value="mybatis/SqlMapConfig.xml" />
38
39       <!-- 数据源 -->
40
41       <property name="dataSource" ref="dataSource" />
42
43    </bean>

1.4     原始dao开发(和spring整合后)

1.4.1     User.xml

在SqlMapconfig.xml中加载User.xml

1.4.2     dao(实现类继承SqlSessionDaoSupport)

dao接口实现类需要注入SqlSessoinFactory,通过spring进行注入。

这里spring声明配置方式,配置dao的bean:

让UserDaoImpl实现类继承SqlSessionDaoSupport

1.4.3     配置dao

在applicationContext.xml中配置dao。

1.4.4     测试程序

1.5     mapper代理开发

1.5.1     mapper.xml和mapper.java

1.5.2     通过MapperFactoryBean创建代理对象

此方法问题:

需要针对每个mapper进行配置,麻烦。

1.5.3     通过MapperScannerConfigurer进行mapper扫描(建议使用)

1.5.4     测试代码

applicationContext.xml

 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
 3     xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 7         http://www.springframework.org/schema/mvc
 8         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 9         http://www.springframework.org/schema/context
10         http://www.springframework.org/schema/context/spring-context-3.2.xsd
11         http://www.springframework.org/schema/aop
12         http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
13         http://www.springframework.org/schema/tx
14         http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
15
16     <!-- 加载配置文件 -->
17     <context:property-placeholder location="classpath:db.properties" />
18
19     <!-- 数据源,使用dbcp -->
20     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
21         destroy-method="close">
22         <property name="driverClassName" value="${jdbc.driver}" />
23         <property name="url" value="${jdbc.url}" />
24         <property name="username" value="${jdbc.username}" />
25         <property name="password" value="${jdbc.password}" />
26         <property name="maxActive" value="10" />
27         <property name="maxIdle" value="5" />
28     </bean>
29
30
31     <!-- sqlSessinFactory -->
32     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
33         <!-- 加载mybatis的配置文件 -->
34         <property name="configLocation" value="mybatis/SqlMapConfig.xml" />
35         <!-- 数据源 -->
36         <property name="dataSource" ref="dataSource" />
37     </bean>
38
39     <!-- 原始dao接口 -->
40
41     <bean id="userDao" class="cn.itcast.ssm.dao.UserDaoImpl">
42         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
43     </bean>
44
45     <!-- mapper配置
46     MapperFactoryBean:根据mapper接口生成代理对象
47     -->
48     <!-- <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
49         mapperInterface指定mapper接口
50         <property name="mapperInterface" value="cn.itcast.ssm.mapper.UserMapper"/>
51         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
52     </bean> -->
53     <!-- mapper批量扫描,从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册
54     遵循规范:将mapper.java和mapper.xml映射文件名称保持一致,且在一个目录 中
55     自动扫描出来的mapper的bean的id为mapper类名(首字母小写)
56     -->
57     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
58         <!-- 指定扫描的包名
59         如果扫描多个包,每个包中间使用半角逗号分隔
60         -->
61         <property name="basePackage" value="cn.itcast.ssm.mapper"/>
62         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
63
64     </bean>
65
66
67
68 </beans>

sqlMapConfig.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6
 7
 8
 9     <!-- 别名定义 -->
10     <typeAliases>
11
12
13         <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
14         <package name="cn.itcast.ssm.po" />
15
16     </typeAliases>
17
18     <!-- 加载 映射文件 -->
19     <mappers>
20         <mapper resource="sqlmap/User.xml" />
21
22
23
24         <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录
25             中 上边规范的前提是:使用的是mapper代理方法 和spring整合后,使用mapper扫描器,这里不需要配置了 -->
26         <!-- <package name="cn.itcast.ssm.mapper"/> -->
27
28     </mappers>
29
30 </configuration>

User.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
 7 注意:使用mapper代理方法开发,namespace有特殊重要的作用
 8 -->
 9 <mapper namespace="test">
10
11     <!-- 在 映射文件中配置很多sql语句 -->
12     <!-- 需求:通过id查询用户表的记录 -->
13     <!-- 通过 select执行数据库查询
14     id:标识 映射文件中的 sql
15     将sql语句封装到mappedStatement对象中,所以将id称为statement的id
16     parameterType:指定输入 参数的类型,这里指定int型
17     #{}表示一个占位符号
18     #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
19
20     resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
21      -->
22     <select id="findUserById" parameterType="int" resultType="cn.itcast.ssm.po.User">
23         SELECT * FROM USER WHERE id=#{value}
24     </select>
25
26
27 </mapper>

UserMapper.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
 7 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址
 8 -->
 9 <mapper namespace="cn.itcast.ssm.mapper.UserMapper">
10
11
12
13     <select id="findUserById" parameterType="int" resultType="user">
14         SELECT * FROM USER WHERE id=#{value}
15     </select>
16
17
18
19 </mapper>

项目源码:

链接:http://pan.baidu.com/s/1c1S7qUk 密码:5oyl

时间: 2024-08-01 22:48:07

九 spring和mybatis整合的相关文章

Spring与Mybatis整合

1.mybatis-spring.jar简介 Spring与Mybatis整合需要引入一个mybatis-spring.jar文件包,该整合包由Mybatis提供,可以从Mybatis官网下载. mybatis-spring.jar提供了下面几个与整合相关的API SqlSessionFactoryBean 为整合应用提供SqlSession对象资源 MapperFactoryBean 根据指定Mapper接口生成Bean实例 MapperScannerConfigurer 根据指定包批量扫描M

Springmvc+spring+maven+Mybatis整合

随着springmvc及maven越来越受到众多开发者的青睐,笔者主要结合springmvc+maven+spring+Mybatis,搭建一套用于开发和学习的框架.本文将一步步展示整个框架的搭建过程,方便交流和学习. 一.开发环境: windows 8.1 eclipse Luna Service Release 1 (4.4.1) mysql-5.6.19-winx64 maven-3.2.3 jdk 1.7 apache-tomcat-7.0.57 二.主要技术: springmvc +

spring mvc+mybatis整合 (二)

转:http://lifeneveralone.diandian.com/post/2012-11-02/40042292065 本文介绍使用spring mvc结合Mybatis搭建一个应用程序框架. demo源码下载:springMVC-Mybatis 1.准备工作: spring的jar包: spring-beans-3.1.0.RELEASE.jar spring-core-3.1.0.RELEASE.jar spring-web-3.1.0.RELEASE.jar spring-web

Spring+SpringMVC +MyBatis整合配置文件案例66666

Spring+SpringMVC +MyBatis整合配置文件案例 标签: springspringmvcmybatismvcjava 2017-04-13 19:12 228人阅读 评论(1) 收藏 举报 分类: java_javaSE(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Spring+SpringMVC +MyBatis整合配置文件案例 针对spring/SpringMVC/MyBatis三个框架的整合有很多的方式,经过最近的学习我来总结一下其配置文

Mybatis学习--spring和Mybatis整合

简介 在前面写测试代码的时候,不管是基于原始dao还是Mapper接口开发都有许多的重复代码,将spring和mybatis整合可以减少这个重复代码,通过spring的模板方法模式,将这些重复的代码进行封装,如:获取SqlSessionFactory.SqlSession.SqlSession的关闭等,我们只需要实现具体的业务处理.另外,spring还利用其IOC将Dao或者Mapper接口的放入到容器中进行管理,更好的实现了解耦. Spring和MyBatis整合 1.整合思路: 需要spri

mybatis学习笔记(14)-spring和mybatis整合

mybatis学习笔记(14)-spring和mybatis整合 mybatis学习笔记14-spring和mybatis整合 整合思路 整合环境 sqlSessionFactory 原始dao开发和spring整合后 mapper代理开发 遇到的问题 本文主要将如何将spring和mybatis整合,只是作简单的示例,没有使用Maven构建.并展示mybatis与spring整合后如何进行原始dao开发和mapper代理开发. 整合思路 需要spring通过单例方式管理SqlSessionFa

Spring和MyBatis整合

spring配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework

spring mvc+mybatis整合

(1) 导入相关包,包结构如下图所示: (2) 修改src/applicationContext.xml文件,结果如下所示: [java] view plaincopy <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上) 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)