欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法

程序员文章站 2024-03-11 23:11:43
sqlsessiontemplate sqlsessiontemplate是mybatis-spring的核心。这个类负责管理mybatis的sqlsession,调用m...

sqlsessiontemplate
sqlsessiontemplate是mybatis-spring的核心。这个类负责管理mybatis的sqlsession,调用mybatis的sql方法,翻译异常。sqlsessiontemplate是线程安全的,可以被多个dao所共享使用。
当调用sql方法时,包含从映射器getmapper()方法返回的方法,sqlsessiontemplate将会保证使用的sqlsession是和当前spring的事务相关的。此外,它管理session的生命周期,包含必要的关闭,提交或回滚操作。
sqlsessiontemplate实现了sqlsession,这就是说要对mybatis的sqlsession进行简易替换。
sqlsessiontemplate通常是被用来替代默认的mybatis实现的defaultsqlsession,因为它不能参与到spring的事务中也不能被注入,因为它是线程不安全的。相同应用程序中两个类之间的转换可能会引起数据一致性的问题。
sqlsessiontemplate对象可以使用sqlsessionfactory作为构造方法的参数来创建。

<bean id="sqlsession" class="org.mybatis.spring.sqlsessiontemplate"> 
  <constructor-arg index="0" ref="sqlsessionfactory"/> 
</bean> 

这个bean现在可以直接注入到dao bean中。你需要在bean中添加一个sqlsession属性,就像下面的代码:

public class userdaoimpl implements userdao{ 
  private sqlsession sqlsession; 
  public void setsqlsession(sqlsession sqlsession){ 
    this.sqlsession = sqlsession; 
  } 
  public user getuser(string userid){ 
    return (user)sqlsession.selectone 
    ("org.mybatis.spring.sample.mapper.usermapper.getuser",userid); 
  } 
} 

如下注入sqlsessiontemplate:

<bean id="userdao" class="org.mybatis.spring.sample.dao.userdaoimpl"> 
  <property name="sqlsession" ref="sqlsession"/> 
</bean> 

sqlsessiondaosupport
sqlsessiondaosupport是一个抽象的支持类,用来为你提供sqlsession。调用getsqlsession()方法你会得到一个sqlsessiontemplate,这然后可以用于执行sql方法,就像下面这样:

public class userdaoimpl extends sqlsessiondaosupport implements userdao{ 
  public user getuser(string userid){ 
    return (user)getsqlsession().selectone 
      ("org.mybatis.spring.sample.mapper.usermapper.getuser",userid); 
  } 
} 

通常mapperfactorybean是这个类的首选,因为它不需要额外的代码。但是,如果你需要在dao中做其它非mybatis的工作或需要具体的类,那么这个类就是很有用了。sqlsessiondaosupport需要一个sqlsessionfactory或sqlsessiontemplate属性来设置。这些被明确地设置或由spring来自动装配。如果两者都被设置了,那么sqlsessionfactory是被忽略的。
假设类usermapperimpl是sqlsessiondaosupport的子类,它可以在spring中进行如下的配置:

<bean id="usermapper" class="org.mybatis.spring.sample.mapper.usermapperimpl"> 
  <property name="sqlsessionfactory" ref="sqlsessionfactory"/> 
</bean>