【网学网提醒】:网学会员为大家收集整理了ibatis整理资料提供大家参考,希望对大家有所帮助!
ibatis学习资料
iBATIS提供的持久层框,相对Hibernate和OJB等的一站式ORM,ibatis呈现一种“半自动”,所谓的“半自动”还是相对于主流的ORM实现方案,Hibernate或OJB通过POJO(JAVABEAN)直接到数据库中进行全面映射,一般重点在对对象逻辑关系的配置上,完成对象的逻辑映射之后,就可以用Hibernate或者OJB提供的方法完成持久层操作。SQL语句等基本不会使用,“一站式”会自行生成SQL语句,并加以调用数据库。
Ibatis最初是用于密码软件的开发,以至于现期的银行系统开发,多选用ibatis,Hibernate太大了,在性能优先方面,确实落于ibatis(杀鸡不用hibernate的意思)。
下面说些ibatis配置:
(confgi.xml还没过多学习,下次解析)
这是对象映射SqlMap文件的内容:
例子:userMap.xml
"2.dtd"这里引用了ibatis2.0版本,现在也有3.0,貌似写法差异不小
下面为对对象映射的具体操作
映射文件的根节点是
。namespace是该的命名空间,因为SQLMap映射文件可以有多个,而对于SQLMap来说所有映射文件都是全局性的。这意味着在SQLMap中的标识只能是惟一的,利用namespace和标识的全限定名就可以进行区别,前提是,配置文件中的useStatementNamespaces属性必须设置为true。
接下来可能会需要对各个对象类的typeAlias进行配置,不得不说,有些类的全称很长,
在进行select,update,delete,insert,之前,
先对resultMap,parameteMap,paramterclass,resultclass
resultMap:当sql又返回值的时候会用到这个属性!
resultclass:返回类型,比如int,string
paremterclass:传入sql的参数类型
parameterMap:いmap类型传入sql中
id为唯一识别标识,在dao层引用,传入的是LoginForm,返回的是resultClass:int
SELECT
COUNT(*)AS
COUNT
FROM
HOSCLINICSTAFF
WHERE
STAFFCODE=#txtUserID#
ANDPASSWORD=#txtUserPW#
对以上语句,#txtUserID#,#txtUserPW#均为LoginForm中的属性,使用#调用,因为返回为一个数字,所以用int类型
可能有疑问,如果传出来的是个对象呢
SELECT
A.STAFFCODEASSTAFFCODE,
A.KANJINAMEASSTAFFNAME,
A.CLINICCODEASCLINICCODE,
B.FORMALNAMEASCLINICNAME
FROM
HOSCLINICSTAFFA,
HOSCLINICB
WHERE
A.STAFFCODE=#txtUserID#·····
where后面的条件依然
来自类,显然这次查询是合并查询,没有必要再建一个表,就把相应的字段,组成LogIn.UserInfo,这也是FormBean,
············
一般resultMap,parameterMap都会在开始定义,这样比较清晰
接下里再看下paramterMap,
列名,属性名,在数据庫的类型,java中的类型(其实这个列名,如果不在存储过程中,是没必要写的)
············
但是这个parameterMap在使用时,还是跟上面的paramenterClass不同的。
SELECTEmployeeID,LastName,FirstNameFROMEmployeesWHEREEmployeeID=?ORLastName=?ORCountry=?
这里就得用?号;,不能用#号了,还得注意中property的顺序跟select语句一致
下面是调了一个存储过程,procedure存储过程标签
InsertEmployee
InsertEmployee接受两个参数@LastName和@FirstName。我给它提供的映射参数如下:
(注意上面啊)
话说,parameterMap如果没有进行配置,怎么使用呢,
UPDATETABSETEDITION=#ID#WHEREUSERID=#USERID#
这里把Map作为了parameterClass,一种隐式调用,这样的话,就得在java代码中进行操作了
先定义Map哦
MapparameterMap=newHashMap();
parameterMap.put("ID","20080101");
parameterMap.put("USERID","22231232312");
try{
sqlMapClient.update("mysqlibatis.update(命名空间.updateID)",parameterMap);
}`·········
这样,在update语句中,#ID#,#USERID#为对应的key值
好吧,上面是简单介绍四种参数
最经典常用增删改查也是最简单的部分
对应着四种操作sql语句
注意:
对于一些特殊符号
,如大于号>、小于号<等需要写在 当然还有些字符:orin
建议使用符号进行统一说明,将此符号内的任何文本不进行解析
处理Like可以用下面的这两种方法
like'%$name$%'
还有个标签,这个感觉比较难,以下为引用资料:
**********************************************************************
1、动态SQL片段
通过SQL片段达到代码复用
selectcount(*)
select*
fromicp
namelike'%$name$%'
pathlike'%path$%'
area_id=#area_id#
hided=#hided#
limit#_start#,#_size#
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
img_size>=#_img_size_ge#
]]>
img_size<#_img_size_lt#
]]>
多次使用一个参数也是允许的
execplantime>=#_now#
]]>
closeplantime<=#_now#
]]>
3、时间范围查询
createtime>=#_starttime#
andcreatetime<#_endtime#
]]>
4、in查询
statein('
ibatis整理资料_网学