iBatis2学习(三)SqlMap的配置总结(18条)
SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。

1、命名空间:
,在此空间外要引用此空间的元素,则需要加上命名空间名。

2、实体的别名:

如果有用到的全名的地方,可以用别名代替,受命名空间约束。

3、插入操作
对于自增主键的表,插入可以不配置插入的主键列。否则是必须的。

4、获取主键

Tags: ibatis  SqlMapClient  
Sping2.0 + Struts2.0 +Ibatis 的使用总结
最近工作中涉及到一些将其他项目组的应用整合到我们平台上的事情。刚好那个项目是base在Appfuse提供的框架基础上开发的。使用了Spring2.0 + Struts2.0 + Ibatis的框架。趁此机会把这几个外面现在比较流行的东西又好好看了看。现在写个总结。也希望能便于以后的参考。好了,元归正传,开始我们的SSI之旅。我们还是从代码讲起。这样也便于我们理解。否则High Level的东西说了一通到最后也不知道都说明了什么。先看几段代码: Spring DataSoure:
Tags: struts2  struts  ibatis  总结  spring2  
使用iBatis的自动化代码生成工具Abator

1.获得Abator http://ibatis.apache.org/abator.html Eclipse可以自动的进行Update获取此Plugin,具体见官方的安装步骤 2.安装好后将在New菜单中看到一个新的文件类型Abator for iBATIS Configuration File,此是Abator的配置文件,配置文件的详细说明见http://ibatis.apache.org/docs/tools/abator/,文件名默认是abatorConfig.xml,根据自己的实际需求进行修改,我这里使用mysql测试,内容是:3.右键单击配置文件,点击Generate iBatis Artifacts,生成文件。 就这样就生成基本的文件的了, 包括:users.java,UsersExample.java,UsersDao.java,UsersDaoImpl.java,users_SqlMap.xml 请注意,这里生成了个UsersExample.java,继承自users.java,我个人觉得是没什么用的,dao里面也包含了很多常用的接口,daoImpl里面的实现完全是按照ibatis来做的,但比较庞大,使用时得删除一些没用的东西SqlMap.xml这个文件也大,没有耐心的看着就头晕,但里面的sql语句写的还是比较标准的,如果自己用且想流程清楚些,得费点功夫改改. 有时间看看Abator这玩意的代码怎么写的,最好改改,适合简单开发就好


Tags: ibatis  自动  代码  工具  Abator  
Abator —— IBatis 代码生成工具

对于IBatis应用最烦人的重复工作就是不停的写DAO,DTO,和xml文件里面的sqlmap,其实很多时候这些工作是重复而且无聊的。好在我们还有abator (http://ibatis.apache.org/abator.html ),一个IBatis自动生成工具,他可以帮助你生成大量的DAO,DTO和sqlmap。如果你使用eclipse作为IDE那么事情就很简单了(相信没有几个人不在用):安装Eclipse插件 1. 要求eclipse3.1,jdk1.4以上 2. 在eclipse上安装abator插件 eclipse菜单栏 --> help --> Software Updates --> Find And Install... 在弹出的对话框中选择 “Search for new features to install” 然后点击 “next” 在对话框中点击按钮 New Remort Site... 在弹出的对话框中的URL输入框中填写 http://ibatis.apache.org/tools/abator ,Name输入框就随便写些什么了。 点击Finish,安装插件,然后重新启动eclipse 下面测试一下功能 1. 新建一个java工程 2. 在eclipse菜单栏中兴建一个 abator 配置文件 File --> Abator for iBatis Configration File 好的,我们完成了创建配置文件,下面打abator配置文件,看看里面怎么去配置打开后内容基本上是这样


Tags: Abator  ibatis  代码  工具  
ibatis 多表查询操作详解

 <sqlMap namespace="user"><--命名空间,好像2.0默认是开通的-->字串9<cacheModel type="LRU" id="oneDayCategory"><!--缓存配置,详细的资料请察看官方提供的用户手册,好像有中文版本的了 -->字串8<


Tags: ibatis  多表查询  操作  详解  
使用Eclipse(MyEclipse)+ abator自动生成iBatis代码以及配置文件的方法

下载Eclipse Plugin。插件一共有2种安装方式,在网页上都有介绍。 2、 新建一个Eclipse项目,项目名称为myibatis,然后选择文件>新建>ABator for iBatis configuration File,选择Location,并且键入File Name:abatorCsonfig.xml。 字串6 3、 点击“完成”,Eclipse会在程序根目录下建立abatorCsonfig.xml文件,打开编辑它,内容如下: 字串7 字串8 字串4 字串2 字串5 字串3


Tags: myeclipse  Abator  自动  ibatis  代码  配置  
ibatis selectKey用法问题

今天在用ibatis selectKey 生成 oracle sequence 的时候 发现一个问题。其实就是相为SHIPMENT_HISTORY表加入一个主键sequence id shipmentHistoryId,加入一条记录,然后返回这个sequence id xml 代码 insert into SHIPMENT_HISTORY (SHIPMENT_ID, RECORD_CREATED_DATE, REMARK) values (#shipmentId:DECIMAL#, #recordCreatedDate:DATE#, #remark:VARCHAR#) select SHIPMENT_HISTORY_ID_SEQUENCE.nextVal from dual 并且这段statement是由Abator自动生成的,蛮以为肯定不会出错的 。 但是这个 statement在运行的时候报错了 ,说不能插入 能null数值插入到SHIPMENT_HISTORY表中 ,说明这个selectKey就根本没有发挥出作用 。查找了一下ibatis的中文文档 ,上面由下面的说明如下 : 很多数据库支持自动生成主键的数据类型。不过这通常(并不总是)是个私有的特性。SQL Map通过的子元素来支持自动生成的键值。它同时支持预生成(如Oracle)和后生成两种类型(如MS-SQL Server)。下面是两个例子:


Tags: ibatis  selectKey  用法  问题  
IBatis的自动生成工具abator的改造

使用abator生成的代码,最大的问题就是它的注释问题!一大堆的"abatorgenerate_",为了代码的可读性,只好download下原代码,进行改造!改造的主要目的是:给生成model、dao、daoImpl的文件加上中文的注释,并且给Model文件的属性设置初始化值。目前已经改造完成,可以添加中文注释,abatorConfig.xml中改动了“table”元素,如下:

增加的comment的属性示例:生成的Model文件如下: CorpLogo.java (注:cno字段没有配置) package cn.test; import java.util.Date;


Tags: ibatis  自动  工具  Abator  改造  
IBatis Abator去除注释版
以前曾修改过Abator,增加了中文注释,即字段的中文说明,先有博友提出要求共享!该版本经使用后发现这样做法得不偿失,需要对每个表进行字段的中文注释补入(在配置文件中增加)!而且还有编码的问题,所以废弃了中文注释。现共享的版本,只去除了Abator生成的代码产生的无用注释和生成的文件名不友好问题!建议数据库的设计命名规范使用下划线进行分割,如:表名:user_other,字段名real_name,使用abator生成后的就会变成:userOther,realName的驼峰格式该工具的使用范例,已Netbeans6.1为例1、新建一个abatortool的java工程2、在工程的根目录下新建abatorConfig.xml文件,文件的内容参考如下:
Tags: ibatis  Abator  注释  
iBATIS的Eclipse插件Abator使用方法

所有的参数都是写在<abatorconfiguration></abatorconfiguration>这个根节点中,下面可以用 <abatorcontext></abatorcontext>来生成个自的iBATIS配置文件、Java Bean和DAO abatorContext的一个属性generatorSet有3个选项Legacy、Java2、Java5 Legacy:如果没有generatorSet属性的话,默认是Legacy。但并不推荐使用Legacy因为它在生成Example类(用于查询条件)的时候有很多限制,他将查询条件写在sqlMap配置文件中,将查询值写在Example中,这样就对修改产生一些困难。 Java2和Java5:他们只支持iBATIS 2.20以上的版本。在以这个模式成生的Example文件中包含了查询条件和查询值。这样修改就方便多了,对于用join的select时的查询就更方 便了,自己可以定义查询条件,自由度高了很多(对于join的and查询可能还得自己修改一下Example代码)。对于or和and的应用Legacy 的限制就比较大了。 <jdbcconnection></jdbcconnection>描述了JDBC的属性和其jar包的位置. <javamodelgenerator></javamodelgenerator>、 <sqlmapgenerator></sqlmapgenerator>、 <daogenerator></daogenerator>描述了个自生成的位置。<daogenerator></daogenerator>中type属性则用来告诉abator生成的DAO是用于iBATIS还是SPRING等容器。


Tags: ibatis  Eclipse  Abator  
iBATIS框架理论学习篇

1、什么是iBATIS
1.1作者
       Clinton Begin,很牛X的名字
1.2背景故事
    Clinton Begin于2001年启动iBATIS项目,最先的焦点是发展密码软件解决方案。第一个iBATIS产品是Secrets,是一个象PGP的个人数据加密器和签名工具。Secrets完全用Java编写并在一个开源许可下发布。
    在发布Secrets Java版后不久,iBATIS项目陷入困境转而关注Web和其它internet相关的技术,在接下来的一年中,两个有趣的软件开发完成,包括Axle web 框架,一个JSP可选工具。Lookout邮件客户端差不多完成90%在 being set on the back burner之前,同时更多有趣的挑战接踵而来…
 1. 4“iBATIS”是什么意思
    现在,单词“ibatis”和SQL Maps 与 DAO 框架同义――就象“xerox”『施乐复印机(商标名称),译者著』和“photocopy” 『影印,译者著』同义。
    回想起iBATIS来源于密码系统软件。iBATIS实际上用两个单词的组合来命名:“internet” 和 “abatis”。
Reference.com 如此定义 abatis:
ab-a-tis
n. pl. ab-a-tis (-tz) or ab-a-tis-es (-t-sz)
将伐倒的树木树枝相互交叉,放置,有时削尖,面对敌人一种防御障碍物。
将“Internet”中象征性的“i”和abatis中的“batis”组合所以暗示了抵御Internet的意思。-in the case of iBATIS它是Secrets提供的关于密码防御的东西。
所以iBATIS正确的写法应该是:iBATIS
1.5 iBATIS怎么念?
    因为我们发明了这个单词,我们以自己喜欢的读音念它
    我们这样读:eye-BAT-iss
但是按照传统,它可能应该被读作:eye-BATE-iss,但就象我们说的,我们创造了它。


Tags: ibatis  
SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; 异常解决

ibatis的openSession在上一版本时,每次打开的都是同一session,   因为它原来的代码在每次打开前会去localSqlMapSession中查找,如果没有才会打开个新的,而且会在返回前放入localSqlMapSession中,这被认为是一个BUG,所以在这个版本上改为返回一个新的session.而在这个session关闭时,才会把这个session返回给sessionPool中.  
          而在spring中,如楼上我的贴子所说,新打开的session没有进入localSqlMapSession,在打开一对多的表的子表时,   于是从sessionPool中得到一个没有被spring设置过setUserConnection的session,从而Transaction   trans   =   getTransaction(session);这里没有得到缺省的事务,那么   trans   =   autoStartTransaction(session,   autoStart,   trans);代码里就会去找这个session的txManager来启动一个事务,但txManager又是null,于是就会发出nullpoint异常了.  
          这时关键就是session的txManager是什么时候设置的.   我们可以看一下spring的SqlMapClientFactoryBean的代码就会发现,只有设置了它的dataSource属性时,才会去设置session的txManager,   所以这里就可以看出在一对多表时,SqlMapClientFactoryBean的dataSource属性一定要设置,   这样能保证在一对多时才不会出问题.


Tags: 异常  SqlMapClient  SQLException  ibatis  
分页:[«] 1[2] [»]
Feed订阅集
勤劳致富^.^
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.