当前位置: 移动技术网 > IT编程>开发语言>Java > Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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> 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网