总算,总算,能写点示例啦,呵呵,其实前面的几篇,我感觉自己写的也很生硬,没有Demo理解起来是很困难,很多名词,反正我初次接触iBatis的时候,是一点也不理解的,我也是比较习惯与从示例中学习的,到今天这一篇...,终于可以完成一个可以让iBatis真正运行起来的实例啦,前面的,可能只能理解为纸上谈兵,不过之所以这么设计,也是不得意而为,因为你不从本质上了解它的协作过程,不会把这个框架运用的很好的 这一篇要写到的...,就是我们所有的查询语句的定义,DataMap,它也是定义在xml文档里的,的确iBatis.Net没有像nhibernate和linq to sql那样,不需要写sql语句,不过也正是因为在这里我们还是需要写...sql语句,才更好的说明了iBatis.Net的特性,或者说叫优势,这里说这些可能您还不懂得这个优势到底体现在哪里,看完这篇文章,我觉得您一定会觉得略微猥琐的爱上它的,哦,突然想起来,有朋友在我上一篇的留言里说...,让我把iBatis.Net和nhibernate对比的写一下,我如果有时间,会写一些关于nhibernate的文章的,但是,我还是觉得,您如果真想了解这两个框架的优劣势,还是先把这两个框架都研究个差不多
在上一篇中,我写了几个最最基本的DataMap映射,但是如果仅仅是这些功能的话,那iBatis真就有点愧对它的粉丝啦,我个人的理解,iBatis真的可以让开发者眼前一亮的特性在于它的动态SQL,在这一篇中...parameterClass的使用通常比parameterMap多一点 resultMap/resultClass:与前两个属性想对应,不过这是两个输出结果属性的定义,区别是,返回的列名与执行Class或者Map...by CustomerID XML转义字符 在XML文档中,有些字符是有特殊含义的,最经典的就是“>”,“ 缓存模式 这个话题,我将在下一篇中写到,继续关注吧,呵呵 动态SQL 重头戏终于来啦 其实上面所有的一切内容,其他很多框架几乎都可以实现的,但是为什么小白和很多人一样钟情与iBatis...而在iBatis.Net中,就提出了一种相对比较好的解决方案(相对,只是保守的说),考虑以下的一个例子 <select id="SelectAllCustomers" resultMap="Customer
1、ibatis 中isNotEmpty的作用 <select id=”getCityListByProvinceId” parameterClass=”simpleMap” resultClass
]]> 这种方式是网上最常见的,但是也是问题最大的, 今天把我彻底纠结了,弄了几个小时,最后发现, Oracle...--必须要加上 --> select * from dual 这种方式,Oracle支持,其他的数据库就不知道支不支持,但是这种方式有个局限性,就是你插入的表的列数* 你插入的行数...这样的话有个需要注意的地方,就是你拼接的SQL语句的长度有没有超过Oracle的最大长度,不过Oracle的最大长度是64KB,你的SQL语句应该不会写这么长吧?
,生成iBatis的Map配置文件,这样一来,用户不用开任何关于框架的说明文档,即可使用此框架。...第二步:为网站添加iBatis框架支持。..." description="Oracle, Oracle provider V9.2.0.401" enabled="false" assemblyName="Oracle.DataAccess...代码生成器也是生成这个类的,这样一来,用户就可以几秒钟创建开发一个iBatis项目了,实体类的配置文件格式如下,在网站的根目录创建一个Map的文件夹,新建xxxMap.xml格式的配置类,比如:PeopleMap.xml...第四步:iBatis框架语法与使用。
,Map由于没有格式限制,可以做数据存储 5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。...数组去重(利用扩展运算符) Map Map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map可以接受一个数组作为参数。...Map和Object的区别 一个Object 的键只能是字符串或者 Symbols,但一个Map 的键可以是任意值。 Map中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。...Map对象的属性 size:返回Map对象中所包含的键值对个数 Map对象的方法 set(key, val): 向Map中添加新元素 get(key): 通过键值查找特定的数值并返回 has(key):...判断Map对象中是否有Key所对应的值,有返回true,否则返回false delete(key): 通过键值从Map中移除对应的数据 clear(): 将这个Map中的所有元素删除 版权声明:本文内容由互联网用户自发贡献
日常问题总结 1.postgre 传 bigint 类型,ibaits可以用int接受,或者bigDecimal接受 2.ibatis 子查询的 parameterClass 需要用 实体类,如java.util.HashMap...,不可以用接口,如java.util.Map 举例 <select id="A" parameterClass="java.util.<em>Map</em>" resultMap="B">
name属性对应的isNotEmpty节点,由于ibatis会自动判定是否需要追加prepend前缀,这里(name like #name#)是WHERE 子句中的第一个条件子句,无需AND 前缀,所以自动省略...判定节点并非仅限于isNotEmpty,ibatis中提供了丰富的判定定义功能。可以分两类: 一、 一元判定 一元判定是针对属性值本身的判定,如属性是否为NULL,是否为空值等。...include refid="sql_where"/> 35 36 <select id="findByParams" parameterClass="<em>map</em>...23 remark = #remark# 24 where id = #id# 25 10、<em>map</em>...-- 返回没有下载的记录总数 --> 32 <select id="getUndownFilesForCount" parameterClass="<em>map</em>" resultClass="
和ApacheOJB等“一站式”ORM解决方案而言,iBatis 是一种“半自动化”的ORM实现。...DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org.../dtd/sql-map-config-2.dtd"> <!...DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map...; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。...使用xml配置方式才能体现出Mybatis的优势所在 2、对象关系映射的改进,效率更高 相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。...其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。...而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。...iBatis / MyBatis 3提供了一个新的功能:的注解。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码。虽然最后证明问题的原因与 ibatis 无关,但是这个过程加深了对 ibatis 框架原理的理解。...这篇文章主要就来讲讲 ibatis 框架的原理。 可能现在很多人已不再使用 ibatis 或者说也没听 ibatis,不过肯定了解过 Mybatis。...ibatis 就是 Mybatis框架的前身,虽然 ibatis 框架已经比较老,但是其核心功能与 Mybatis 一致。 ibatis 解决的痛点 我们先看一个使用 JDBC 查询的例子。 ?...时序图来源于:https://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/index.html ibatis 样板代码 上面讲完了...ibatis 数据类型的转化原理,接着我们来看下 ibatis 调用 JDBC 样板代码。
电子书 是ibatis 项目组写的ibatis开发的权威书籍.现在只有电子版,目前使用Java作为描述的平台,这个书对于.NET和Ruby一样适用. ...当然了,这就是iBATIS. ...iBATIS 不仅将应用程序完全的与“数据库连接”、具体的SQL语句隔绝开来,更实现了通过XML描述文档来将JavaBean /.NET object映射到SQL语句。...这样,iBATIS 就除去了许多执行SQL语句带来的苦差。通过编辑XML描述文档和调用少量的iBATIS的API,代替了写大量的JDBC底层代码。...使用持久层框架 当然,iBATIS不能实现高层开发和维护SQL语句,而且缺乏可移植性。为了避免这类问题,你需要用到持久层框架。持久层框架可以将对象域映射到数据库中。
(注:以下代码是基于ibatis3 beta4的扩展,ibatis3正式版如果实现改变,将会继续跟进修改) iBatis3默认使用的分页是基于游标的分页,而这种分页在不同的数据库上性能差异不一致,最好的办法当然是使用类似...iBatis3现在提供插件功能,通过插件我们可以编写自己的拦截器来拦截iBatis3的主要执行方法来完成相关功能的扩展。...public BoundSql getBoundSql(Object parameterObject) { return boundSql; } } } 2.ibatis3...DB2Dialect,PostgreSQLDialect,MySQLDialect,DerbyDialect--> <plugin interceptor="cn.org.rapid_framework.<em>ibatis</em>3...而是使用“limit 8,20”)使用分页 完整代码可以查看即将发布的rapid-framework 3.0的<em>ibatis</em>3插件
在iBatis.Net中,可以通过SqlMapper实例访问DataMapper API,其实以前写的都是一些iBatis.Net的概念和一些配置的问题,从这一篇开始,才是真正的精髓,也是我们使用iBatis.NET...parameterObject); public int Update(string statementName, object parameterObject); 从方法名就可以看的出来他们要执行的操作,如果您没有使用过iBatis...接口的字典类型,他的key值是由keyProperty指定的,如果我们不需要结果集中存放的是整个对象,而是某一列值,还可以使用valueProperty指定一个值来确定返回结果中的列值 Session 在iBatis.Net...RollBackTransaction(); public void RollBackTransaction(bool closeConnection); 对数据库的操作,当然少不了对事务的支持啦,当然iBatis.Net
最近来了一个新项目,说是新的项目,但是需要用到以前旧的模块代码,旧的模块使用架构为ssi 而新项目使用spring mvc +mybatis,考虑到工作量的问题,所以决定使用spring mvc +mybatis、ibatis... 兼容ibatis...的sqlMapClient配置 <bean id="sqlMapClient" class="org.springframework.orm.<em>ibatis</em>.SqlMapClientFactoryBean
在处理数据库和Java对象之间的映射时,MyBatis提供了一种高度灵活的机制来处理那些在结果集中存在但在Java对象中没有相应属性的未知列。这种机制通过Aut...
在iBatis中,我们把所有的配置和映射都放在XML文件里(当然,这未必是一定需要的),但是,XML文件不是可执行的,所以,如果我们要在我们的c#代码里使用iBatis的映射,就必须通过一个类来加载、分析...所以在iBatis中,提供给了我们很多的API来做这些事情,配置以及映射文件的加载和监视是在创建SqlMapper实例的时候进行的,而所有的数据映射的工作以及我们对数据库的操作,是需要在SqlMapper...实例上调用方法来完成的,SqlMapper实例具有多线程并且长期活动的性质,在iBatis外界,可以随处使用这样的方法来调用得到SqlMapper实例 ISqlMapper mapper=Mapper.Instance...则在这个过程中,默认使用了DomSqlMapBuilder.ConfigureAndWatch的方法来监视配置文件的状况,如果期间出现了改动,SqlMapper对象会被安全的重新载入,当然,如果你不喜欢iBatis...替你做这件事情,则可以通过 ISqlMapper mapper=builder.Configure() 来获取sqlMapper实例 SqlMapper.Config文档的加载 iBatis提供了多种方法对
如果status的状态为0,则更新attribute1;状态为1,则更新attribute2;
:thin:@localhost:1521:xe 4 jdbc.driver=oracle.jdbc.OracleDriver 配置mybatis的总配置文件: mybatis-config.xml:..." /> 19 20...; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory... map = new HashMap(); 50 map.put("id", 10); 51 map.put...", map);*/ 54 55 //删除 56 /*Map map = new HashMap<String,Integer
领取专属 10元无门槛券
手把手带您无忧上云