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">
<!-- &在配置文件中代表& -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis117?useUnicode=true&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>
总体而言,今天对于我们代码的书写量上没有太多的要求,更多的是去理解和掌握框架整合的步骤,以及在实际的项目中对事物管理的灵活处理。
随着课程的深入,逐渐的进入了持久层、业务层之间混合操作的板块了,在目前理解上,有一些难度,相信在不断的练习和摸索后,会有更多的发现,加油!~
- JavaEE
- javaEE
- javaee
- javaEE
- JAVAEE
- JAVAEE
- javaEE
- JavaEE
- javaEE
- JavaEE
- JavaEE
- javaEE
- javaEE
- javaEE
- javaEE
- javaEE
- javaEE
- javaEE
- Clone使用方法详解
- Android Studio安装过程以及导入eclipse工程遇到的问题
- 【JQuery】addClass()和css()
- Why can't MEX find a supported compiler in MATLAB R2015b after I upgraded to Xcode 7.0?
- leetcode_108 Convert Sorted Array to Binary Search Tree
- javaEE
- FZU 2110Star(计算几何)
- [BZOJ1477]青蛙的约会(扩欧)
- 1009
- Quadratic primes
- hdu 3308 最长连续上升区间
- GeoHash核心原理解析 附近的人算法
- 2011年哈尔滨工业大学计算机研究生机试真题
- leetcode - Valid Anagram