本节介绍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征服数据库

    一.spring的数据访问哲学 1. Srping的目标之一就是允许我们在开发应用程序的时候,能够遵循面向对象(Object Oriented,OO)原则中的"针对接口式编程"; ...

  2. Spring : 征服数据库(一)

    严格的说.这里征服的是关系型数据库.之后笔者会以MongoDB为例,给出非关系型数据库的解决方式,敬请期待. 获取连接,操作,关闭,不知所云的异常...是的,你受够了.在使用纯JDBC时你訪问数据库时 ...

  3. 第五章 征服数据库(Spring对DB的使用)——开发持久层

    本章内容: 定义Spring对数据库访问的支持 配置数据库资源 使用Spring的JDBC模板 在几乎所有的企业级应用中,都需要构建数据持久层.现在意义上的数据持久层是指把对象或者数据保存到数据库中, ...

  4. 黑马-Spring与数据库

    Spring与数据库 Spring与jdbc 引入dataSource 在客户端 模板编程 类的结构图, 真正干活的是JdbcTemplate(底层实现,操作 excute方法) JdbcTempla ...

  5. Spring管理事物两种方式

    Spring管理事物两种方式 1. 编程式事物管理(在开发中不经常使用) 使用步骤 1. 配置数据库事物管理 DataSourceTransactionManager <!--配置事物管理器-- ...

  6. Spring(四)Spring与数据库编程

    Spring最重要的功能毫无疑问就是操作数据.数据库的百年城是互联网编程的基础,Spring为开发者提供了JDBC模板模式,那就是它自身的JdbcTemplate.Spring还提供了Transact ...

  7. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

  8. Spring 链接数据库

    一.前言 Spring 现在是我们在做 JavaWeb 开发中,用的最主流的框架.以后是不是我们暂时不知道,但现在是.废话不多我就介绍 Spring 中.链接数据库的三种方式: git源码地址 需要的 ...

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

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

随机推荐

  1. Linux内核——定时器和时间管理

    定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...

  2. OCP读书笔记(20) - 复制数据库

    没有连接到target的复制 将orcl数据库的备份复制为orcl1 一.创建orcl的备份: run{ backup database plus archivelog;} 二.复制数据库为orcl1 ...

  3. KMP求字符串最小循环节

    证明1: 对于一个字符串S,长度为L,如果由长度为len的字符串s(字符串s的最小循环节是其本身)循环k次构成,那么字符串s就是字符串S的最小循环节 那么字符串有个很重要的性质和KMP挂钩,即  i ...

  4. WEB网站性能优化

    最近做了一个WEB现场.幸运的是,一开始.但后来越来越慢,特别是在调试模式,,这肯定是我们的代码有问题.但是即使业务不是非常复杂的也非常慢,我们就想当然的觉得我们的代码没问题,可最后证明还是我们的代码 ...

  5. Zabbix的数据表结构

    看到Zabbix的数据表结构吧,就知道数据量大了 性能问题很让人担忧,不过基于Zabbix数据库导出报表,或自动跑报表的时候,就必须去了解一下zabbix的数据表结构了,得知道XX放在哪才能找到XX, ...

  6. RedGate 工具SQLTEST 1.0.15.1

    原文:RedGate 工具SQLTEST 1.0.15.1 RedGate 工具SQLTEST 1.0.15.1 SQL TEST1.0.15.1的破解可以参考这篇文章:http://www.cnbl ...

  7. Java Web整合开发(附录2) -- NetBeans的(默认)快捷键

    1.完成代码:ctrl+\ //任何地方按下此组合键,均会提示相应的参考字段: 2.错误提示:alt + enter //顾名思义,当系统报错时,按下此组合可以查看系统提示: 3.自动完成字符串: c ...

  8. Source Insight 光标变粗设置NotePad++光标设置

    为了更好的查看文档和代码,避免半天都找不到光标的情况,故做此说明 Source Insight 光标变粗 菜单中 Options --->Preferences --->Typing -- ...

  9. 采用ACE登录设施(一)HelloWorld

    (1)开始使用日志设施 使用日志设施,总是要包括头文件: #include "ace/Log_Msg.h" ACE日志的Hello World #ifdef _DEBUG #pra ...

  10. Matrix+POJ+二维树状数组初步

                                                                                                         ...