ibatis简介

合集下载

ibatis调用存储过程

ibatis调用存储过程

iBatis调用存储过程1. 什么是iBatisiBatis是一种持久层框架,用于简化Java应用程序与关系型数据库之间的交互。

它提供了一种简单的方式来执行数据库操作,使开发人员能够更加专注于业务逻辑的实现,而无需过多关注底层数据库的细节。

2. 存储过程的概念存储过程是一组预定义的SQL语句集合,被存储在数据库中并可以通过名称进行调用。

存储过程可以接受参数,并可以返回结果集或输出参数。

它提供了一种封装和重用SQL代码的方式,提高了数据库的性能和安全性。

3. iBatis调用存储过程的步骤使用iBatis调用存储过程需要以下步骤:3.1 配置数据源首先,需要在iBatis的配置文件中配置数据库连接信息,包括数据库的URL、用户名、密码等。

这样iBatis才能够连接到数据库。

3.2 定义存储过程的映射在iBatis的映射文件中,需要定义存储过程的映射关系。

这包括存储过程的名称、参数列表、以及结果集的映射方式等。

3.3 调用存储过程在Java代码中,可以使用iBatis提供的API来调用存储过程。

首先,需要获取一个iBatis的SqlMapClient对象,然后通过该对象来执行存储过程的调用。

// 获取SqlMapClient对象SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);// 调用存储过程sqlMapClient.queryForObject("proc_get_user", parameterObject);3.4 处理存储过程的结果在执行存储过程之后,可以通过返回的结果对象来获取存储过程的执行结果。

根据存储过程的定义,可能会返回一个结果集或者输出参数。

// 获取存储过程的执行结果ResultObject result = (ResultObject) sqlMapClient.queryForObject("proc_get_user", parameterObject);// 处理结果...4. 示例:调用存储过程获取用户信息下面以一个示例来说明如何使用iBatis调用存储过程来获取用户信息。

Ibatis介绍及环境配置

Ibatis介绍及环境配置

• 优点 与JDBC比较: 减少了61%的代码量 简单 架构及性能强 Sql语句与程序代码分离 简化项目中的分工 增强了移植性
• 缺点 • sql语句需要自己写 • 参数只能是一个
• insert <insert id="inserEmp" parameterClass=“Emp"> insert into emp (empno, ename, job ,sal, hiredate) values (#empno#,#ename#,#job#,#sal#,#hiredate#) </insert>
• • • • •
搭建环境:导入相关的jar包 配置文件: Jdbc连接的属性文件 总配置文件 关于每个实体的映射文件(map文件)
• 属性文件: driver=oracle.jdbc.driver.OracleDriver url="jdbc:oracle:thin:@localhost:1521:orcl username=“scott" password=“tiger"
• 模糊查询 <select id="querylike" parameterClass="String" resultClass=“Emp"> select sid,ename,job,hiredate,sal from emp where ename like '%$ename$%' </select>
• • • • • •
借助SqlMapClient中的方法: queryObject queryList insert update delete
• Select

iBATIS教程

iBATIS教程

2.2 XML配置--SqlMap XML配置-配置--SqlMap
parameterMap
输入值的映射,里面的参数是对应的POJO类的属性.class=“person ..这个 输入值的映射,里面的参数是对应的POJO类的属性.class= person ..这个 POJO类的属性.class= person”.. 是所对应的POJO类的别名.是在typeAlias POJO类的别名 是所对应的POJO类的别名.是在typeAlias 中定义的
2.1
2.实际操作
1. MVC三层架构 MVC三层架构 2. XML配置 3. 方法调用
2.1.MVC三层架构 MVC三层架构
个人理解的MVC及分包
Web目录为为视图层 目录为为视图层(V) 1. Web目录为为视图层(V) Com.nstek. com.nstek. 2. Com.nstek.interfaces 和 com.nstek.dao 属于业务逻辑层 3. 控制层不明显,后面详细说明 控制层不明显, Com.nstek.util. 4. Com.nstek.util.*下为本工程的实用工具 包 , 在本工程中主要是存放对数据库进行 连接的类, 连接的类 , 和连接数据库所需要的配置文 件 Com.nstek.entity此包下存放的是POJO类 此包下存放的是POJO 5. Com.nstek.entity此包下存放的是POJO类 持久化类)这是iBATIS所控制的持久化层, iBATIS所控制的持久化层 (持久化类)这是iBATIS所控制的持久化层, 是在业务逻辑层是基础上细分出的一层 Com.nstek.xml存放的是iBATIS的XML配置 存放的是iBATIS 6. Com.nstek.xml存放的是iBATIS的XML配置 文件

ibatis iterate用法

ibatis iterate用法

ibatis iterate用法摘要:1.iBatis 简介2.iBatis Iterate 用法概述3.iBatis Iterate 的具体用法4.示例代码5.总结正文:1.iBatis 简介iBatis 是一个流行的Java 持久层框架,它支持定制化SQL、存储过程以及高级映射。

iBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。

iBatis 可以使用简单的XML 或注解进行配置和原生映射,将接口和Java 的POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。

2.iBatis Iterate 用法概述在iBatis 中,Iterate 是一个非常有用的标签,用于处理结果集的迭代。

使用Iterate 标签,可以方便地对结果集进行遍历和处理。

iBatis 的Iterate 用法主要分为两种:一种是在SQL 语句中使用,另一种是在Java 代码中使用。

3.iBatis Iterate 的具体用法(1) 在SQL 语句中使用在SQL 语句中使用Iterate,可以通过"foreach" 关键字实现。

以下是一个示例:```sql<select id="findAll" resultMap="userResultMap">SELECT * FROM userWHERE deleted = #{deleted}ORDER BY #{orderBy}</select><iterate open="(" close=")" conjunction="),("><select id="findUserByName" resultMap="userResultMap"> SELECT * FROM user WHERE name = #{name}</select></iterate>```(2) 在Java 代码中使用在Java 代码中使用Iterate,可以通过以下步骤实现:1) 创建一个ResultMap 对象,用于映射结果集到Java 对象。

ibatis list集合判断

ibatis list集合判断

ibatis list集合判断摘要:1.iBatis 简介2.iBatis List 集合3.判断方法4.示例代码正文:1.iBatis 简介iBatis 是一个流行的Java 持久层框架,用于将SQL 语句与Java 对象映射。

它提供了一种简单的方法来实现Java 对象与数据库表之间的映射,而无需手动编写SQL 语句。

iBatis 使用了一个XML 映射文件,该文件描述了Java 对象与数据库表之间的映射关系。

2.iBatis List 集合在iBatis 中,List 集合是一个常用的数据结构,用于存储从数据库查询到的多个记录。

List 集合可以是任何Java 集合类型,例如List<User>或List<Map<String, Object>>。

通过使用List 集合,我们可以将查询结果存储在一个集合中,方便后续的数据处理和操作。

3.判断方法在实际编程中,我们经常需要对List 集合中的数据进行判断。

以下是一些常用的判断方法:- 判断集合是否为空:可以使用isEmpty() 方法来判断List 集合是否为空。

- 判断集合中是否存在某个元素:可以使用contains() 方法来判断List 集合中是否存在某个元素。

- 判断集合中元素的数量:可以使用size() 方法来获取List 集合中元素的数量。

- 判断两个集合是否相等:可以使用equals() 方法来判断两个List 集合是否相等。

4.示例代码以下是一个使用iBatis List 集合进行判断的示例代码:```javaimport mon.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;public class iBatisListExample {public static void main(String[] args) throws IOException {// 加载iBatis 映射文件SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsStream("config.xml"));// 查询用户信息List<Map<String, Object>> userList = sqlMapClient.queryForList("User");// 判断List 集合是否为空if (userList.isEmpty()) {System.out.println("用户列表为空");} else {// 判断List 集合中是否存在某个元素boolean containsUser = userList.contains(new HashMap<String, Object>());System.out.println("用户列表中是否存在某个元素:" + containsUser);// 获取List 集合中元素的数量int userCount = userList.size();System.out.println("用户列表中元素的数量:" + userCount);// 判断两个集合是否相等List<Map<String, Object>> anotherUserList = sqlMapClient.queryForList("User");boolean equalUserLists =userList.equals(anotherUserList);System.out.println("两个用户列表是否相等:" + equalUserLists);}}}```通过以上示例代码,我们可以看到如何在iBatis 中使用List 集合进行判断。

iBatis学习笔记

iBatis学习笔记

什么是iBatis?iBatis是一种“半自动”的ORM工具,其对SQL进行了封装(像函数一样设置输入获得输出)和外部化(将SQL代码从java程序中分离出去,在单独的XML映射文件中开发和维护),iBatis的API都是面向对象的,也就是说这些API的输入输出都是通过对象(javabean,Map,基本类型及其封装类,XML)来传递的。

iBatis的几点主要特性:iBatis利用XML来封装SQL。

iBatis所处的位置:iBatis架构位于数据持久层,位于应用程序的业务逻辑层和数据库之间,使代码更容易维护。

感觉这几个层的具体代码实现上都是通过类来组织起来的,就像c是通过函数来组织起来的。

ORM工具将数据库表及其列映射为应用程序中的类及字段,元数据映射正是适合使用ORM 工具的地方。

ORM工具将数据库表及其列映射为应用程序中的类及字段。

iBatis和O/RM不同,不是直接把类映射为数据库表或者把类的字段映射为数据表列,而是把SQL语句的参数和结果(输入输出)映射为类。

iBatis主要有SQL Map配置文件,SQL Map文件,以及相关的API组成。

SQL Map配置文件:<properties>元素,在主配置文件之外提供一个名/值对列表,有两个属性resource 和url,前者在应用程序的类路径上定位资源,后者则是以绝对路径来获取资源。

<properties resource = “db.properties”/><property name = “JDBC.Driver”value = “${driver}”/><settings>元素,有元素lazyLoadingEnabled,延迟加载,只加载必要信息而推迟加载其他未明确请求的数据的技术,用于指定相关联的已映射语句时,是否使用延迟加载,默认值为true. cacheModelsEnabled,用户提高程序性能的技术,基于用过的数据往往很快又会被用的假设,默认值为true,必须为已映射语句配置高速缓存模型。

iBatis工作原理

iBatis工作原理

<result property=”description” column=”PRD_DESCRIPTION”/>
</resultMap>
<select id=”getProduct” parameterMap=”productParam”
resultMap=”productResult” cacheModel=”product-cache”>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from ACCOUNT"/>
<property name="JDBC.Password" value="${password}"/>
<property name="JDBC.DefaultAutoCommit" value="true" />
<property name="Pool.MaximumActiveConnections" value="10"/><property name="Pool.MaximumIdleConnections" value="5"/>

ibatis简单教程

ibatis简单教程

1 处理特殊字符
SQL语句中的特珠字符处理,如 <
将包含特殊字符的SQL语句放在XML的CDATA区里面。 <![CDATA[ SELECT * FROM PERSON
WHERE AGE < #value#
]]>
2 自动生成主键 -- mysql
<!— MS-SQL/MySql:自动增长 -->
C、定义SQL语句:
<select „> <insert „>
<delete „>
<update „> D、定义存储过程: <procedure ...>
4 常见的标签简介 -- 2
E、判断参数是否为空:isParameterPresent、isNotParameterPresent
F、判断参数里面属性值: isEmpty、isNotEmpty
isNull、isNotБайду номын сангаасull
isEqual、isNotEqual isGreaterThan、isGreaterEqual
isLessThan、isLessEqual
G、循环参数里的某个属性:iterate H、dynamic:将一组动态的SQL语句组织到一起
4 常见的标签简介 -- 3
I、标签的属性:
MapDataExchange
B、涉及到的类或接口:
仅仅针对map类型的数据进行操作
AccessPlan(从参数中获取或设置数据)、Prob
ibatis关键技术分析
1 统一入口 (外观模式)
所有的操作(事务处理、增删改查)都使用同一个对象操作(是否单例则要
具体问题具体分析了) SqlMapClientImpl
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ibatis
iBATIS
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。

目录
起源
半自动化
发展
起源
半自动化
发展
展开
编辑本段起源
一站式
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

纵观目前主流
所谓“半自动”,可能理解上有点生涩。

纵观目前主流的ORM,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。

程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate或者OJB 提供的方法完成持久层操作。

程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。

新系统的开发
大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头。

但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。

在笔者的系统咨询工作过程中,常常遇到以下情况:
1.系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。

2.开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交通银行,都在开发规范中严格指定)3.系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。

面对这样的需求,再次举起Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏……,说得未免有些凄凉,直接使用JDBC进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作令人厌烦。

编辑本段半自动化
刚好解决
“半自动化”的ibatis,却刚好解决了这个问题。

这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”
ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动
生成和执行。

而ibatis 的着力点,则在于POJO 与SQL之间的映射关系。

也就是说,ibatis
并不会为程序员在运行期自动生成SQL 执行。

具体的SQL 需要程序员编写,然后通过映
射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。

全自动
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,
这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate
会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。

相对Hibernate等
“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统
设计提供了更大的自由空间。

作为“全自动”ORM实现的一种有益补充,ibatis 的出现显
得别具意义。

编辑本段发展
ibatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。

相关文档
最新文档