当前位置:文档之家› SSM开发实战教程(Spring+Spring MVC+Mybatis) 第13章 SSM三大框架整合

SSM开发实战教程(Spring+Spring MVC+Mybatis) 第13章 SSM三大框架整合

化了开发流程。SpringMVC本来就是Spring框架的一 部分,这两者无须再做整合,所以SSM整合的关键 就是Spring对MyBatis的整合,三大框架整合完成后, 将以Spring为核心,调用有关资源,高效运作。
13.1.1 Spring整合MyBatis开发环境
除了需要Spring的jar包和MyBatis的jar包,还需要 Spring与MyBatis整合的中间件mybatis-spring-1.3.1.jar, 此外还需要数据库驱动jar包mysql-connector-java5.1.37.jar。
<property name="mapperInterface" value="com.lifeng.dao.IStudentDao"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
这里其实使用了MapperFactoryBean类来代理实现接口, 假定项目还有其他DAO层,一样这样做,依照这个模 板再添加一条bean就是了。但如果一个项目有太多的 DAO类,则需要添加太多的bean,可以进行简化,配 置批量扫描包,将包下的所有接口自动创建代理实现
ห้องสมุดไป่ตู้
实现步骤:
(1)拷贝项目springmybatis1为springmybatis2,删除 StudentDaoImpl类。 (2)修改spring配置文件,删除SqlSessionTemplate的配置,修改 DAO层的配置如下。 <bean id="studentDao" class="org.mybatis.spring.mapper.MapperFactoryBean" >
SSM开发实战教程
第13章 SSM三大框架整合
Spring整合MyBatis可以实现让数据库连接,事务管 理,实例化对象的创建与依赖关系等都统一由Spring 负责,以及数据库的增删改查操作由spring-mybatis 整合包提供的SqlSessionTemplate对象来操作,或者 利用整合包扫描接口,依据Mapper映射文件直接创 建代理实现类,无须程序员手工实现接口,大大简
类,只需下面一条配置就可以,无需再一一创建DAO 层的bean。
<bean class="org.mybatis.spring.mapper.MapperSca nnerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
Caused by: org.springframework.beans.factory.NoSuchBeanD efinitionException: No bean named 'studentDao' available

at
提示业务层找不到studentDao这个bean。解决方案就 是让业务层按类型自动装配就行了,业务层的配置代 码修改如下:
<property name="basePackage" value="com.lifeng.dao"/>
</bean>
MapperScannerConfigurer将扫描指定basePackage属 性指定的包下的所有接口类,如果这些接口都有对 应的映射文件,则会将他们动态的定义一个bean, 这样就无须一个个定义bean了。
13.1.2 DAO接口实现类开发整合
项目案例:spring+mybatis实现student数据库的增删 改查。(项目源码见本书配套源码:第13章/Spring整合 MyBatis/springmybatis1)
实现步骤: (1)新建项目,导入上述jar包。如图13.1所示。
(2)创建实体类Student。 (3)创建DAO接口IStudentDao。 (4)创建DAO接口的实现类StudentDaoImpl。 (5)创建业务层接口IStudentService。 (6)创建业务层接口的实现类StudentServiceImpl。 (7)创建SQL映射文件StudentMapper.xml。 (8)创建Mybatis配置文件mybatis-config.xml。 (9)spring配置文件applicationContext.xml。 (10)测试类。
ref="studentDao"/> </bean>
之前这种配置,SERVICE层注入studentDao属性值,关系 很清晰,每一个业务bean都能装配具体名称的Dao层的 bean。但现在studentDao这个bean配置已经没有了(bean 由代理动态的自动生成),就这样运行的话,程序会报错:
13.1.3 DAO接口无实现类开发整合
由于mybatis可以通过代理实现接口,可以不要DAO 的实现类,一样可以做出来。但如果没有DAO的实 现类,业务层Service类中的的DAO属性该如何注入? 通过下面这个案例可以得到答案。
项目案例:改造上述项目,去掉DAO的实现类,但 能实现同样的功能。(项目源码见本书配套源码:第13 章/Spring整合MyBatis/springmybatis2)
ref="sqlSessionTemplate"/> </bean> <!-- 配置SERVICE层,注入studentDao属性值 --> <bean id="studentService"
class="com.lifeng.service.StudentServiceImpl"> <property name="studentDao"
但问题在于Service层,之前有手工创建DAO层的 bean,Service层再一个个进行手工注入这些DAO层 的bean,类似下面的配置。
<!-- 配置DAO层,注入SqlSessionTemplate属性值 --> <bean id="studentDao"
class="com.lifeng.dao.StudentDaoImpl"> <property name="sqlSessionTemplate"
相关主题