spring与mybatis整合

来源:互联网 发布:淘宝怎么免单 编辑:程序博客网 时间:2024/05/23 07:25
第一步:下载对应的框架包;
第二步:一般都是从框架包中选择需要的JAR文件;(有maven库则不需要,直接修改配置文件pom.xml去指定项目需要的JAR);
第三步:创建项目,组织自己的包结构,类结构(OOAD-需求分析),编写对应的配置文件;主要是spring框架的配置文件
Spring框架的配置文件;
如何配置Spring:
1、Spring-orm中封装了持久层hibernate、jdo、jpa的框架;而没有封装mybatis,因为mybatis是面向SQL的编程; 因此mybatis提供兼容spring的框架mybatis-Sping-1.2.3;
其他导入的包:commons-logging/log4j/mybatis-3.3.0/mysql-connector/(测试包-3个)junit-4.12/javassist-3.4/hamcrest-all-1.3/(面向切面包-3个)/spring的包(20个)
2、创建一个maven项目,建立工程包:
建包:先按业务分(人员{学生、老师}、资料);
再每个业务中按水平分(beans,controller,dao,mapper,service);
3、创建配置文件:applicationContext.xml; //配置:beans、context、aop、tx
步骤1:开启自动扫描,将项目组件纳入到容器中进行管理;
//自动扫描,com.lovo包下的文件;
<context:component-scan base-package="com.lovo"></context:component-scan>
步骤2:配置数据源连接池(SQL) :来源于:spring-jdbc.jar
在jdbc中去查看创建数据连接池的构造方法
//ignore-unresolva:忽略解析不了的信息;
<context:property-placeholder location="classpath:mysql01.properties" ignore-unresolvable="true"/>

//配置在外面的properties文件中,导入://注意使用&而非&amp;
<!-- 如果url直接写在XML中,那么&符号就需要使用&amp;来表示,如果写在properties,就直接使用&符号即可 -->
driverClassName=org.gjt.mm.mysql.Driver
url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username=root
password=lovo

//class 实例化的类为: 通过properties文件传入对应的值;
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driverClassName}"></property>
<!-- 如果url直接写在XML中,那么&符号就需要使用&amp;来表示,如果写在properties,就直接使用&符号即可 -->
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>

步骤3:配置数据源所对应的SessionFactory工厂,来源于:mybatis-spring.jar
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
//来自第二步配置的数据源
<property name="dataSource" ref="dataSource"></property>
<!-- 如果存在多个包同时需要取类别名时,可以用","或者";"间隔书写 -->
<property name="typeAliasesPackage"
value="com.lovo.personmag.studentmag.beans,
com.lovo.personmag.teachermag.beans,
com.lovo.personmag.usermag.beans"></property>
</bean>

步骤4:配置SQLMapper的映射的扫描,并将扫描后的映射文件与session进行关联;来源于:mybatis-spring.jar'
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 如果存在多个包同时需要扫描映射文件的时候,可以用,或者;间隔书-->
<property name="basePackage"
value="com.lovo.personmag.studentmag.mapper,
com.lovo.personmag.teachermag.mapper,
com.lovo.personmag.usermag.mapper"></property>
<!-- 将上述的映射文件与SqlSession进行关联 并注意这里不能使用sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

步骤5:最后还要配置事务管理器,来源于spring-jdbc.jar;
<bean id="txManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
//配置数据源,来自于第二步的数据源, name是弹出来的,ref是2步id;
<property name="dataSource" ref="dataSource"></property>
</bean>
最后:
spring管理事务的几种方式,最重要的是SpringAOP管理事务;分为编程式事务管理和声明式事务管理
<!-- 编程式事务管理 -->
//开启事务支持, 以上的对象被实例化,
<tx:annotation-driven transaction-manager="txManage"/>
<!-- 声明式事务管理 -->
详细查看事务精讲

编程式事务管理:【在service层处理】
第一步:开启事务支持,
配置信息
开启事务支持:
<>
第二步:添加注解
@Service
@Transactional(readOnly=true)
//全局事务控制,如果方法上已经定义了事务,将以方法事务控制为准,避免遗忘注解;
public class UserServiceImpl implements IUserService {}

@Transactional(isolation=Isolation.REPEATABLE_READ,rollbackFor=Exception.class,propagation=Propagation.REQUIRED,readOnly=false,timeout=200)
//方法的事务控制(隔离为=可复读,回滚打印异常,事务传播第1种,连接为非只读,执行多久时间200毫秒没反应就失败 )
@Override
public void saveUser(UserBean user) {}

@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.SUPPORTS,readOnly=true,timeout=200)
@Override
public List<UserBean> findUsers() {}
【备注】:SUPPORTS 为查询的事务传播;

@Resource
private IUserDao userDaoImpl;
//@Resource(name="userDaoImpl")如果指定了装配的具体的哪一个组件的话,那么这时装配方式就是byName
//如果不指定具体装配的话,那么先按照byName属性的名称来装配,如果属性名称没找到,将回退到byType的方式来进行装配


第三步:在test测试类中进行测试,
@RunWith(SpringJUnit4ClassRunner.class)
//配置到我们IOC容器中;
@ContextConfiguration(locations={"classpath:applicationContext.xml"})

@Resource
private IUserService userServiceImpl;
0 0
原创粉丝点击