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

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>

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, spring
, mybatis
, dao
数据访问对象
spring mybatis框架、springmvcmybatis框架、spring mybatis dao、spring mybatis dao层、spring boot mybatis,以便于您获取更多的相关知识。

时间: 2024-10-03 15:11:19

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

Yii学习总结之数据访问对象 (DAO)

 本文是YII学习总结系列文章的第二篇,主要向我们介绍了数据访问对象(DAO),十分的详细,有需要的小伙伴参考下     Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提供了一个通用的A

Yii学习总结之数据访问对象 (DAO)_php实例

Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提供了一个通用的API. 因此,在将底层 DBMS 更换为另一个时,无需修改使用了 DAO 访问数据的代码. Yii DAO 基于 PHP

Java的Spring框架中AOP项目的一般配置和部署教程_java

0.关于AOP面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对

使用Spring框架轻松解决数据访问和配置问题

如果您是一名典型的开发人员,那您必然乐意得到一个可解决数据访问问题的解决方案,也会欢迎任何能够简化配置的工具.如果不是有人提出了 Spring,则对 Web 应用程序做一个总体介绍将非常困难,对于这些特定的问题更是如此.但是,天哪,我们真的需要另外一种 Web 应用程序框架吗?在我决定撰写一期 Geronimo 叛逆者文章,来探讨 Apache Geronimo 和 Spring 的交叉时,我就知道,这正是搞清所有关于 Spring 框架的传闻的大好时机.Jeff Genender 为我解答了很

Java模式设计之数据访问对象模式

很多的J2EE应用程序需要使用持久性数据(数据库.文件等).不同的程序,持久性存储是各不相同的,并且用来访问这些不同的持久性存储机制的API也有很大的不同.如果应用程序要在不同的持久性存储间迁移,这些访问特定持久存储层的代码将面临重写. 如何解决这个问题?且看"DAO模式" 数据访问对象(Data Acess Object) 模式 一.环境 根据数据源不同,数据访问也不同.根据存储的类型(关系数据库.面向对象数据库.文件等等)和供应商实现不同,持久性存储(比如数据库)的访问差别也很大.

Java的Spring框架中DAO数据访问对象的使用示例_java

Spring DAO之JDBC  Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等.它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常. 为了便于以一种一致的方式使用各种数据访问技术,如JDBC.JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展.这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他

详解Java的Spring框架中的事务管理方式_java

数据库事务是被当作单个工作单元的操作序列.这些操作要么全部完成或全部不成功.事务管理是面向企业应用程序,以确保数据的完整性和一致性RDBMS中的重要组成部分.事务的概念可以用下面的描述为ACID四个关键属性来描述: 原子性: 一个事务应该被视为单个操作单元表示的操作的任一整个序列是成功的或不成功的. 一致性: 这代表了数据库的参照完整性,在桌等唯一主键的一致性 隔离性: 可能有很多事务处理相同的数据集的同时,每个事务都应由他人隔离,以防止数据损坏. 持久性: 一旦事务完成,本次事务的结果必须作出

深入理解Java的Spring框架中的IOC容器_java

Spring IOC的原型spring框架的基础核心和起点毫无疑问就是IOC,IOC作为spring容器提供的核心技术,成功完成了依赖的反转:从主类的对依赖的主动管理反转为了spring容器对依赖的全局控制. 这样做的好处是什么呢? 当然就是所谓的"解耦"了,可以使得程序的各模块之间的关系更为独立,只需要spring控制这些模块之间的依赖关系并在容器启动和初始化的过程中将依据这些依赖关系创建.管理和维护这些模块就好,如果需要改变模块间的依赖关系的话,甚至都不需要改变程序代码,只需要将更

springmvc+mybatis+spring框架处理checkbox

问题描述 springmvc+mybatis+spring框架处理checkbox springmvc+mybatis+spring框架,前台页面checkbox类型数据的value值如何传输到后台的控制器,大神求解,我在做一个系统超级管理员设置其他管理员权限的时候,数据库有张权限表,而且这张表对应的实体类数据类型是Boolean,我想在前台用checkbox勾选权限,然后 将value值传到后台进行修改,但是checkbox勾选后,值传不到控制器,大家有木有解决的方法啊~这是对应的实体类和前台