本节介绍Spring和ORM集成框架。尽管Hibernate在开源ORM 社区很受欢迎。但是,本文将MyBatis案例解说。也MyBatis和Hibernate好坏是没有意义的,主要看实际需求,有兴趣的可以百度、歌查看。

首先配置环境。你得有mybatis和mybatis-spring在Springproject的build path里,假设你使用的是Maven,仅仅需加入以下的依赖:(都是眼下最新版本号)

        <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.7</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency>

这里主要介绍的是Mybatis和Spring的整合,不会着重解说Mybatis的详细使用方法。

我们知道。MyBatis应用的核心是SqlSessionFactory,在Spring里也须要定义这样一个bean,

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /></bean>

使用的是SqlSessionFactoryBean创建SqlSessionFactory。并须要注入数据源dataSource,这里的数据源就是Spring里面定义的随意数据源,为了演示方便,使用的是上一篇文章介绍的H2内嵌数据源,

<jdbc:embedded-database id="dataSource" type="H2"><jdbc:script location="classpath:schema.sql" /><jdbc:script location="classpath:data.sql" /></jdbc:embedded-database>

在MyBatis里面,为实现SQL的映射。使用的是XML配置文件或mapper接口。上一篇我们的SQL的模式例如以下:

create table spitter (id identity,username varchar(25) not null,password varchar(25) not null,fullname varchar(100) not null,email varchar(50) not null,update_by_email boolean not null
);

新建一个接口,

package org.chen.mybatis.mapper;import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.chen.domain.Spitter;
public interface SpitterMapper {@Select("SELECT * from spitter where email = #{email}")Spitter getSpitter(@Param("email") String email);
}

实际上命名并无要求。但约定是domain+Mapper。在一个方法上面加入注解,这里是 @Select。内容是一个SQL语句, #{email}是參数,用于PrepraredStatement使用。

然后使用MapperFactoryBean将该接口注冊到Spring,

  <bean id="spitterMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="org.chen.mybatis.mapper.SpitterMapper" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>

如今使用上面这个bean就能够完毕关系对象映射了,我们一般把spitterMapper注入到service里面。

如,

public class TestService {private SpitterMapper spitterMapper;public void setSpitterMapper(SpitterMapper spitterMapper) {this.spitterMapper = spitterMapper;}public void getSpitterByEmail(String email){Spitter spitter = spitterMapper.getSpitter(email);System.out.println("spitter is " + spitter.getFullName());}
}

至此,基本操作根据可以完毕。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Spring : 征服数据库 (两)相关推荐

  1. spring(10)通过spring 和 JDBC征服数据库

    [0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  "spring(10)通过spring 和 JDBC ...

  2. Spring 实现数据库读写分离

    Spring 实现数据库读写分离 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Master库负责数据更新和实时数据查询,Slave库当然 ...

  3. JAVA面试汇总第四章 Spring及数据库相关

    Spring 核心功能演示 + 面试题 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 Sprin ...

  4. linux定时器多次,Spring 定时器执行两次

    Spring错误笔记 Spring定时器执行两次因为导入了两次 关于配置文件如下 对应的类有个定时执行检查的动作,但是动作中的日志每次输出两遍,一开始以为是log4j的输出导致的两条,找了半天没办法还 ...

  5. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  6. Spring之数据库操作

    本文主要包括以下内容 spring+jdbc数据库操作 spring+jdbc声明事务处理 spring+hibernate声明事务处理 spring+jdbc数据库操作 方法 1.让自己写的一个da ...

  7. Spring访问数据库异常的处理方法(转)

    原文链接:http://sarin.javaeye.com/blog/888458 今天我们将谈谈Spring访问数据库异常的处理方法,使用JDBC API时,很多操作都要声明抛出java.sql.S ...

  8. spring 定时任务执行两次解决办法

    在web.xml中同时配置了ContextLoaderListener和DispatcherServlet?假如真是这样的话,需要删掉一个配置,因为你相当于配置了两个spring容器,两个容器分别都执 ...

  9. spring mvc中两种异常的处理手法

    spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...

最新文章

  1. CAMB中查看波矢的取值范围
  2. 查看动态代理生成的代理类字节码
  3. docker与jenkins学习
  4. .net开源框架简介和通用技术选型建议
  5. Python 卸载python
  6. 利用扩展欧几里得算法编程求逆元
  7. 了解JavaScript中的Memoization以提高性能,再看React的应用
  8. 路径获取文件名通用方法
  9. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)
  10. python2.0 s12 day4
  11. photon 服务器操作系统,photon 云服务器
  12. 中国电信物联网平台入门学习笔记2: DOME程序分析
  13. 若依源码分析(7)——岗位管理
  14. 【spider01】Urllib
  15. django学习日记2017-10-20: 登录界面
  16. 本地数据下,radiobutton和图片组合,利用adapter+listview进行单选
  17. html 淡入淡出效果,css3 transition实现淡入淡出效果 - 小俊学习网
  18. 占内存少的java开发工具_Java所占内存中神奇的64MB
  19. Linux jar包在screen开机自启
  20. 字符串大小比较的规则?

热门文章

  1. php mvc实例下载,php实现简单的MVC框架实例
  2. win10服务器权限修改时间,win10系统修改时间显示没权限的解决方案
  3. asio boost 异步错误处理_boost::ASIO的同步方式和异步方式
  4. 使用JDBC进行MySQL 5.1的数据连接、查询、修改等操作练习。
  5. “抽象类”的定义及其与“普通类”的区别
  6. React 组件生命周期
  7. js取一定范围内的随机整数
  8. Storybook 5.0正式发布:有史以来变化最大的版本\n
  9. nginx rewrite 指令last break区别最详细的解释
  10. 【短视频SDK - 参数解析】对焦模式、裁剪模式、视频质量、分辨率、视频比例、帧率、关键帧间隔等参数解析...