Spring : 征服数据库 (两)
本节介绍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 : 征服数据库 (两)相关推荐
- spring(10)通过spring 和 JDBC征服数据库
[0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review "spring(10)通过spring 和 JDBC ...
- Spring 实现数据库读写分离
Spring 实现数据库读写分离 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Master库负责数据更新和实时数据查询,Slave库当然 ...
- JAVA面试汇总第四章 Spring及数据库相关
Spring 核心功能演示 + 面试题 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 Sprin ...
- linux定时器多次,Spring 定时器执行两次
Spring错误笔记 Spring定时器执行两次因为导入了两次 关于配置文件如下 对应的类有个定时执行检查的动作,但是动作中的日志每次输出两遍,一开始以为是log4j的输出导致的两条,找了半天没办法还 ...
- mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界
本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...
- Spring之数据库操作
本文主要包括以下内容 spring+jdbc数据库操作 spring+jdbc声明事务处理 spring+hibernate声明事务处理 spring+jdbc数据库操作 方法 1.让自己写的一个da ...
- Spring访问数据库异常的处理方法(转)
原文链接:http://sarin.javaeye.com/blog/888458 今天我们将谈谈Spring访问数据库异常的处理方法,使用JDBC API时,很多操作都要声明抛出java.sql.S ...
- spring 定时任务执行两次解决办法
在web.xml中同时配置了ContextLoaderListener和DispatcherServlet?假如真是这样的话,需要删掉一个配置,因为你相当于配置了两个spring容器,两个容器分别都执 ...
- spring mvc中两种异常的处理手法
spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...
最新文章
- CAMB中查看波矢的取值范围
- 查看动态代理生成的代理类字节码
- docker与jenkins学习
- .net开源框架简介和通用技术选型建议
- Python 卸载python
- 利用扩展欧几里得算法编程求逆元
- 了解JavaScript中的Memoization以提高性能,再看React的应用
- 路径获取文件名通用方法
- 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)
- python2.0 s12 day4
- photon 服务器操作系统,photon 云服务器
- 中国电信物联网平台入门学习笔记2: DOME程序分析
- 若依源码分析(7)——岗位管理
- 【spider01】Urllib
- django学习日记2017-10-20: 登录界面
- 本地数据下,radiobutton和图片组合,利用adapter+listview进行单选
- html 淡入淡出效果,css3 transition实现淡入淡出效果 - 小俊学习网
- 占内存少的java开发工具_Java所占内存中神奇的64MB
- Linux jar包在screen开机自启
- 字符串大小比较的规则?
热门文章
- php mvc实例下载,php实现简单的MVC框架实例
- win10服务器权限修改时间,win10系统修改时间显示没权限的解决方案
- asio boost 异步错误处理_boost::ASIO的同步方式和异步方式
- 使用JDBC进行MySQL 5.1的数据连接、查询、修改等操作练习。
- “抽象类”的定义及其与“普通类”的区别
- React 组件生命周期
- js取一定范围内的随机整数
- Storybook 5.0正式发布:有史以来变化最大的版本\n
- nginx rewrite 指令last break区别最详细的解释
- 【短视频SDK - 参数解析】对焦模式、裁剪模式、视频质量、分辨率、视频比例、帧率、关键帧间隔等参数解析...