Ibatis作为一个将java对象与sql中的数据进行映射的工具,可以将一个应用中常用的sql操作抽象为模版,在应用后续与数据库的交互中,将输入sql语句简化为更改一部分参数。
ibatis整合到springmvc项目中包括以下的内容:
1. 创建一个与数据表相对应的java简单对象POJO
例如:我们的数据表结构如下:
aaarticlea/png;base64,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" alt="" name="en-media:image/png:2e9efe066c4ea8828054bb275efe91d9:none:none" />
相应的,我们创建一个java对象AttendDO:
public class AttendDO {
private String username;
private Date attendTime;
private int type;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getAttendTime() {
return attendTime;
}
public void setAttendTime(Date attendTime) {
this.attendTime = attendTime;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
注意:所有属性必须添加相应的get和set函数,因为ibatis会将数据写入到创建的AttendDO对象中。
2. 在spring的配置文件中增加ibatis需要的配置文件
ibatis主要完成以下两件事:
- 根据JDBC规范建立与数据库的连接
- 通过反射打通Java对象与数据库数据交互之间相互转化的关系
———摘自《深入分析Java Web技术内幕》
我们新建一个配置文件applicationContext.xml文件(名称没有限制)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.HG.test"/>
<!-- 扫描java文件,将所有注解标示的类注册为bean -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
前面提到,ibatis共有两大任务,而applicationContext.xml包括了所有ibatis的配置信息。
其中,dataSource配置了与数据库交互的所有信息,这些信息在配置文件jdbc.properties中。
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/Attendance
username = root
password = 910718
而另一项任务:将java对象与数据库的数据进行关联,则在sqlMapClient中进行配置。
sqlMapClientFactoryBean是一个产生sqlMapClient的工厂,而sqlMapClient中存放的最主要的信息包括configLocation和dataSource,其中dataSource用来链接数据库,而configLocation中存放了另一个ibatis重要的配置文件,我们这里将该文件起名为sqlMapConfig.xml。首先给结论:configLocation中存放了有关数据表和java对象映射的内容。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 这里可以写多个实体的映射文件 -->
<sqlMap resource="sqlmap-attend.xml"/>
</sqlMapConfig>
其中,sqlMapConfig中写入相应的映射文件,这个映射就表示了一张数据表与相应的java对象的映射关系。sqlmap-attend.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!-- 为AttendDO设置一个别名 -->
<typeAlias alias="AttendDO" type="com.HG.test.pojo.AttendDO"/>
<!-- 配置对象和数据表之间的映射关系 -->
<resultMap id="attendDO" class="AttendDO">
<result property="username" column="username" />
<result property="attendTime" column="attendTime" />
<result property="type" column="type" />
</resultMap>
<insert id="insert_attend" parameterClass="AttendDO">
<![CDATA[
insert into attend(username, attendTime, type) values(#username#, #attendTime#, #type#)
]]>
</insert>
<select id="select_attend_time" parameterClass="java.util.Map" resultMap="attendDO">
<![CDATA[
select * from attend where attendTime BETWEEN #startTime# AND #endTime#
]]>
</select>
</sqlMap>
有关sqlmap配置的技巧,已经有很多博客详细写了,我就不在赘述了。贴出链接:
上述文件给出了数据表中每个数据和attendDO中的每个成员变量的映射关系,同时给出了相应的sql语句模版。
回过头,我们看applicationContext.xml文件,文件中包含了配置数据库连接、数据表和java对象映射关系以及相应的sql语句模版三个功能。
到此为止,所有ibatis的配置内容介绍完毕,最后只需要将总的配置文件applicationContext.xml文件在spring的配置文件中进行配置即可:
在dispatcher-servlet.xml中:
<import resource="classpath:applicationContext.xml"/>
3.dao层
spring项目的dao层一般用来与数据库进行交互。下面为AttendDaoImpl.java
@Component
public class AttendDaoImpl extends SqlMapClientDaoSupport implements AttendDAO {
@Resource(name = "sqlMapClient")
private SqlMapClient sqlMapClient;
@PostConstruct
public void initSqlMapClient(){
super.setSqlMapClient(sqlMapClient);
}
@Override
public boolean insert_attend(AttendDO attendDO) {
Object result = getSqlMapClientTemplate().insert("insert_attend", attendDO);
return result != null ? true:false;
}
@Override
public List<AttendDO> select_byTime(Date startTime, Date endTime) {
Map<String, Date> timeMap = new HashMap<String, Date>();
timeMap.put("startTime", startTime);
timeMap.put("endTime", endTime);
List<AttendDO> result = getSqlMapClientTemplate().queryForList("select_attend_time", timeMap);
return result;
}
@Override
public List<AttendDO> select_byUser(String username, Date startTime, Date endTime) {
return null;
}
@Override
public List<List<AttendDO>> select_ALLUser(Date startTime, Date endTime) {
return null;
}
}
上面一段代码中,首先要将配置文件中的sqlMapClient的bean实例化传给SqlMapClientDaoSupport。
以select_byTime()函数为例,首先,为了传递两个参数,构造一个map结构作为入参。之后getSqlMapClientTemplate()函数由beanfactory构造了一个SqlMapClientTemplate的实例。由于程序配置的sqlMapClient在开始已经写入到本类中,所以生成的sqlMapClient都具有相同的配置信息。之后,调用其queryForList()函数,该函数由两个参数,第一个参数为对应的sqlMap文件中sql模版的id,第二个参数为为sql模版传递的参数。在执行了查询操作后,会将结果集返回,返回的类型也在sqlMap中由resultMap配置项进行了规定。
4.测试
直接贴代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value="classpath:applicationContext.xml")
public class AttendDAOTest {
@Resource
private AttendDaoImpl attendDaoImpl;
@Test
public void selectTest() throws ParseException
{
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
Date startTime = sim.parse("2016-09-12");
Date endTime = sim.parse("2016-09-17");
List<AttendDO> list = attendDaoImpl.select_byTime(startTime, endTime);
for(int i = 0; i<list.size();i++)
{
System.out.println(list.get(i).getUsername() + " " +list.get(i).getAttendTime() + " " +list.get(i).getType());
}
}
}
- spring+springmvc+ibatis整合注解方式实例【转】
源自-----> http://shaohan126448.iteye.com/blog/2033563 (1)web.xml文件(Tomcat使用) 服务器根据配置内容初始化spring框架, ...
- spring+springmvc+ibatis整合注解方式实例
需求说明 实现用户通过数据库验证登录需求.採用 Myeclipse+Tomcat 6.0+Mysql 5.0+JDK 1.6 2.数据库表 开发所用是Mysql数据库,仅仅建立单张用户表T_USER, ...
- spring+struts2+ibatis 框架整合以及解析
一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...
- spring cloud 入门系列八:使用spring cloud sleuth整合zipkin进行服务链路追踪
好久没有写博客了,主要是最近有些忙,今天忙里偷闲来一篇. =======我是华丽的分割线========== 微服务架构是一种分布式架构,微服务系统按照业务划分服务单元,一个微服务往往会有很多个服务单 ...
- Spring Boot:整合MyBatis框架
综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单 ...
- Spring Boot【快速入门】简单案例
Spring Boot[快速入门] Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Spring 核心概念以及入门教程
初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...
随机推荐
- Git (1)
对于程序员来说,版本管理工具可称得上是必需品.越来越多的版本管理开始使用Git,特别是Github的流行更加使得大家对于Git越来越关注.因此对于Git的学习是非常必要和重要的. 先看几个好玩的数据: ...
- web版扫雷小游戏(四)
~~~接上篇,游戏的主体框架完成了,接下来我们对游戏中存在的两个主要实体进行分析,一个是雷点类BombObject(节点对象),一个是节点对象对应的图片对象BombImgObject,根据第一篇的介绍 ...
- js中的prototye
前言 没事的时候写着js完,一般可能大家都知道这个属性吧,但是我还要说说,给一些不知道的人看看吧, 希望对你有帮助. 过程 以前在学c#的时候,老师最多用的就是Person这个类来开讲,我觉得是这个更 ...
- Android Handler、Lopper消息驱动机制
Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例(MesageQueue),应用程序的主线程不断地从这个消息队例中获取消息(Mesage),然后对这些消息进行处理(Han ...
- 简单学C——第五天
结构体 首先明确,结构体是一种构造的数据类型,是一种由多个数据类型如 int,char,double,数组或者结构体......组成的类型,现在告诉大家如何定义一个结构体.在定义int整型变量时,大家 ...
- matlab常用小函数(二)
numel 元素个数 assert 表达式为假时输出某个字符串 int2str 整形转化为字符串型 numel(A) 返回A中的元素个数,A可以是任何的数据结构,如向量.矩阵.元胞.结构体等 asse ...
- Octopress 之 Mac 版环境配置
前提条件: 1.安装了 Git2.用 rbenv 或 RVM 安装了 Ruby 1.9.3 以上版本3.安装了 ExecJS 的一种支持 JavaScript 运行环境 一.安装 Octopress ...
- QT变异版本下载(SJLJ长跳转,DWARF不传递错误(32位专用),SEH(64位专用)),以及QT的实验室项目
http://www.tver-soft.org/ http://sourceforge.net/projects/qt64ng/ ---------------------------------- ...
- apk,task,android:process与android:sharedUserId的区别
apk一般占一个dalvik,一个进程,一个task.通过设置也可以多个进程,占多个task. task是一个activity的栈,其中"可能"含有来自多个App的activity ...
- JS原型函数相关基础知识
函数对象和普通对象 //普通对象 var oo1 = {}, oo2 = new Object(), oo3 = []; console.log(typeof oo1 + ',' + typeof o ...