iBatis框架基本使用
iBatis框架是Java持久层开发框架,说白了就是前人写了一部分代码(针对数据库操作),我们要做的就是再次开发,拿来框架直接使用。
我们自己开发时,dao层的sql语句都是写死在程序中的,如果查询条件改变什么的都需要修改sql语句,这样就得去修改原代码,违背了开发原则中的开闭原则。有没有一种实现让sql不再写死在程序里,iBatis框架就可以使sql文活起来。
iBatis是一个开源的项目,有兴趣的可以去看看那些元老级的人物是怎么将封装的框架。本文旨在介绍它的使用。
第一步:搭建环境
所谓的搭建环境就是拷贝iBatis的jar包到我们的项目中。这样我们就可以使用框架中的相关类啦。
由于iBatis是数据库方面的操作,所以还有添加数据库方面的jar包,我用的是oracle的数据库,所以得到oracle的安装目录下面去找链接数据库的ojdbc6.jar
第二步:编写实体类和dao层接口及实现
这里需要做的就是将数据库的表对应封装成对象实体,定义Dao层的接口和实现,接口的具体实现这里不需要写,只需要把类准备出来,把接口准备出来就可以拉。
第三步:拷贝xml文件
将iBatis中的两个xml文件拷贝到项目中(下载的iBatis资料中会有相应的jar包和简单的例子,例子中有xml文件),一个是SqlMapConfig.xml是完成数据库配置的文件,另一个是实体类对应的xml文件,本文以User.xml为例。
需要注意的是这两个文件所放的位置,一般都是将SqlMapConfig.xml文件拷贝到项目的根目录下面,放在src下,实体类对应的xml文件跟对应的实体放在一块就行了。
一个系统中就只有一个SqlMapConfig.xml文件,文件的名称可以更改,是数据库配置文件,文件内容参考如下:
- <?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>
- <transactionManager type="JDBC" commitRequired="false">
- <dataSource type="SIMPLE">
- <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
- <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:Orl"/>
- <property name="JDBC.Username" value="scott"/>
- <property name="JDBC.Password" value="tiger"/>
- </dataSource>
- </transactionManager>
- <sqlMap resource="com/ibatis/bean/User.xml"/>
- </sqlMapConfig>
实体类的配置文件则有多个,是和实体类对应的。内容参考如下:
- <?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>
- <!--起别名-->
- <typeAlias alias="UserType" type="com.ibatis.bean.User"></typeAlias>
- <!--insert操作,parameterClass为参数的类型-->
- <insert id="insertUserID" parameterClass="UserType">
- insert into t_user (
- username,
- userpswd)
- values (
- #username#, #userpswd#
- )
- </insert>
- <delete id="deleteUser" parameterClass="java.lang.String">
- delete from t_user where username=#username#
- </delete>
- </sqlMap>
第四步:编写dao层接口实现
用了框架后,实现类中就没有sql语句了,在上面参考代码中看到,sql语句都配置到对应的实体类对应的配置文件中拉,这样实现类的代码就会变得很简单,如下:
这样就可以实现对User的添加和删除了,如果此时还不放心,可以添加个测试类测试一次。
使用框架,前提配置工作一定要做好。主要在配置文件上面。一定要仔细。
iBatis框架基本使用的更多相关文章
- iBatis框架batch处理优化 (转)
为什么要做batch处理 这个问题我就不解释了,因为我想你们肯定能比我解释的更好!如果你真的不知道,那就到Google上去搜索一下吧☻Oracle回滚段 这个问题偶也不很明白,只是 ...
- iBatis框架简介
一.为啥使用iBatis? 在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择.即使在持久层框架层出不穷 ...
- 【转】深入分析 iBATIS 框架之系统架构与映射原理
深入分析 iBATIS 框架之系统架构与映射原理 iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Ja ...
- 深入分析 iBATIS 框架之系统架构与映射原理--转载
http://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/ iBATIS 通过 SQL Map 将 Java 对象映射成 SQL ...
- spring+struts2+ibatis 框架整合以及解析
一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...
- spring struts2 ibatis 框架结构图
spring struts2 ibatis 框架结构图
- 框架学习:ibatis框架的结构和分析
由于最近一段时间比较忙碌,<框架学习>系列的文章一直在搁浅着,最近开始继续这个系列的文章更新. 在上篇文章中我们说到了hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优 ...
- Ibatis框架之系统架构
如果用最简洁的话来总结 iBATIS 主要完成那些功能时,我想下面几个代码足够概括. Class.forName("oracle.jdbc.driver.OracleDriver" ...
- 深入分析 iBATIS 框架之系统架构与映射原理
iBATIS 框架主要的类层次结构 总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情: 根据 JDBC 规范建立与数据库的连接: 通过反射打通 Java 对象与数据库参数交互之间相 ...
随机推荐
- 把汉字转换为html实体编码
背景:工作中需要把汉字转换为html实体编码实现方式:import org.apache.commons.lang.StringEscapeUtils;public static void main( ...
- Win8+VMware12+CentOS7网络设置
VMware提供了三种将虚拟网卡和物理网卡捆绑起来的方式,即桥接(Bridge)模式,网络地址转换(Network Address Transformation, NAT)模式和主机(Host Onl ...
- html5与html4的区别,如何一眼区分
还是在面试过程中遇到的这个问题,但是当时感觉回答的不是很全面,回来以后自己做的总结: 以上这个问题如果教大家看源码,可能一眼很直观的就能认出,那个是html4,那个是html5,但是面试的时候问道这个 ...
- 终端更新ubuntu系统
1.sudo apt-get update 2. sudo apt-get dist-upgrade
- npm Scripts使用教程【译】
Why npm Scripts? 原文发表于 2016.2.12,原文地址: https://css-tricks.com/why-npm-scripts/ 以下是访客Damon Bauer发布的一篇 ...
- 一场属于HTML5守望者的盛宴——记图灵参加HTML5峰会
2013年8月,北京正是一个火热的季节.一场火热的盛会,HTML5 峰会如约来袭.这是一场属于 HTML5 守望者的盛宴!HTML5作为一项新兴的技术,其未来是光明的,但是道路却是曲折的.需要标准的不 ...
- 通达信5分钟.lc5和.lc1文件格式
一.通达信日线*.day文件 文件名即股票代码 每32个字节为一天数据 每4个字节为一个字段,每个字段内低字节在前 00 ~ 03 字节:年月日, 整型 04 ~ 07 ...
- [已解决] java 增加 ALPN支持
添加javaVM参数: -Xbootclasspath/p:lib/alpn-boot-8.1.10.v20161026.jar 文章来源:http://www.cnblogs.com/gifisan ...
- &和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...
- 《编写可维护的JavaScript》——JavaScript编码规范(七)
UI层的松耦合 在web开发中,用户界面(UI)是由三个彼此隔离又相互作用的层定义的. HTML用来定义页面的数据和语义. CSS用来给页面添加样式,创建视觉特征. JavaScript用来给页面添加 ...