首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Spring调整iBatis之三:从Spring角度看两框架整合(包括事务处理)

2012-11-06 
Spring整合iBatis之三:从Spring角度看两框架整合(包括事务处理)从spring看整合,spring自己的本职工作大体

Spring整合iBatis之三:从Spring角度看两框架整合(包括事务处理)


    从spring看整合,spring自己的本职工作大体上只剩加载配置文件,和运行service了。

    

   这两者都要有所改变,具体来讲:

    1.applicationContext-common.xml要把iBatis需要整合的功能都接手过来,比如数据源配置、iBatis配置、准备和注入iBatis需要的template模版还有事务管理,下文细说。

    2.service要执行iBatis管理好了的DAO操作


    Spring调整iBatis之三:从Spring角度看两框架整合(包括事务处理)



一:applicationContext-common.xml

整个整合过程中最麻烦的东西就在这里边

由它加载的东西很多:

    1.iBatis的数据源配置(驱动、URL、用户名、密码)

    2.iBatis自身的配置(iBatis管理哪个类和表的对应,命名空间是什么)

    3.注入DAO的service(要执行DAOImpl)

    4.事务处理器(tx:advice,筛选的命名规则,什么只读,怎么处理)

    5.事务处理aop(什么方法要用事务处理,用哪个事务处理器处理)

具体看注释吧

package com.rt.sidemo.service;import java.util.List;import com.rt.sidemo.dao.IStudentDAO;import com.rt.sidemo.model.Student;public class StudentService {//xml中,"s1Dao" class="com.rt.sidemo.dao.StudentDAOImpl",将注入在此属性中//注入的实例中还包含dataSource和ibatis配置private IStudentDAO studentDAO;  public void add(Student stu) {//test调用这个add方法/* * 正常实例插入后,故意出错实例报错‘违反唯一约束’ * 此时,连同‘已经’插入的正常实例一起回滚,也就是只要有异常,整步操作全都回滚 * 证明事务处理时是正确的 * Student stuNew = new Student();//正常实例,这个可以正常插入没问题stuNew.setStudentid(780);stuNew.setName("Spring+iBatis4");stuNew.setAge(780);studentDAO.addStudent(stuNew);Student stuReplace = new Student();//故意出错实例,这个主键之前已经有了,插入会‘违反唯一约束’stuReplace.setStudentid(779);stuReplace.setName("Spring+iBatis3");stuReplace.setAge(779);studentDAO.addStudent(stuReplace);*/studentDAO.addStudent(stu);}public List<Student> getAll() {//test调用return studentDAO.selectAll();}//setter&getterpublic IStudentDAO getStudentDAO() {return studentDAO;}public void setStudentDAO(IStudentDAO studentDAO) {this.studentDAO = studentDAO;}/*其他注入方式 * 1属性注入private String propertyInj;//public String getPropertyInj() {return propertyInj;}public void setPropertyInj(String propertyInj) {this.propertyInj = propertyInj;System.out.println("属性注入--"+propertyInj);} * 2构造public StudentService(){}public StudentService(IStudentDAO user)//构造时注入{user.addStudent(new Student());}//lazy-initpublic void UserInit(){System.out.println("调用初始");}public void UserDestroy(){System.out.println("调用销毁");}*/}






热点排行