javaEE

来源:互联网 发布:苹果mac怎么删除照片 编辑:程序博客网 时间:2024/06/05 15:39

 今天是进行mybatis的整合


主要讲了mybatis应用在持久层中时,与spring应用与在业务层之间的链接。


今天和前几天不同

重点讲了在javaEE中比较重要的内容

框架整合步骤:
第一步:通常是先确定使用的框架,然后找到框架所需要的jar文件,切记:需要什么就加什么。

第二步:一定先分析框架有哪些配置文件,找出来并进行初始化,删除不必要的东西。

第三部:开始整合


首先基本是将mybatis.cfg.xml配置文件中的大部分内容全部注入到了applicationContext.xml文件中

首先

<!-- 配置自动扫包规则 -->
<context:component-scan base-package="com.lovo.sm">
</context:component-scan>

然后
<!-- 配置数据源 DataSource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- &amp;在配置文件中代表& -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis117?useUnicode=true&amp;characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="lovo"/>
</bean>

<!-- 配置Session工厂 -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis.cfg.xml"/>
</bean>

<!-- 将Mapper配置文件与Session进行关联 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lovo.sm.mapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"></property>
</bean>

<!-- 配置事务管理器 -->
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>


<!-- 事务管理方式一,适合于单数据库,使用注解的方式来管理事务 
<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
-->

<!-- 事务管理方式二,采用springAOP来声明式的处理事务,适合于多个数据库
声明式就是脱离你的JAVA代码,通常是声明在配置中 -->
<!-- 声明一个通知 -->
<tx:advice id="txAdvice" transaction-manager="dataSourceTransactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="true"></tx:method>
<tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"></tx:method>
</tx:attributes>
</tx:advice>


当然,在事务管理中,也可以直接以下列方式进行事务管理

@Transactional(isolation=Isolation.SERIALIZABLE,readOnly=false,rollbackFor=Exception.class,propagation=Propagation.REQUIRED)
@Insert("insert into t_user (user_name,password,sex,salary) values (#{user.userName},#{user.password},#{user.sex},#{user.salary})")

public int saveUserInfo(@Param("user")UserInfoT user)throws Exception;


<!-- 这里是配置AOP事务关联 -->
<aop:config>
<!-- 声明切入点 -->
<aop:pointcut id="serviceMethod" expression="execution(* com.lovo.sm.service.impl.*ServiceImpl.*(..))"></aop:pointcut>
<!-- 将我们定义的通知,交给AOP来关联 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"></aop:advisor>
</aop:config>


总体而言,今天对于我们代码的书写量上没有太多的要求,更多的是去理解和掌握框架整合的步骤,以及在实际的项目中对事物管理的灵活处理。


随着课程的深入,逐渐的进入了持久层、业务层之间混合操作的板块了,在目前理解上,有一些难度,相信在不断的练习和摸索后,会有更多的发现,加油!~



0 0
原创粉丝点击