读书人

ibatis(二)关于配置文件的书写

发布时间: 2012-06-26 10:04:13 作者: rapoo

ibatis(2)关于配置文件的书写

最近做了些ibatis 的练习,以及spring对ibatis的整合。

对ibatis的配置文件的书写做以下总结:


?

(1)insert 返回的为插入的主键值,但必须在配置文件中加入<selectKey/>

? ?如果主键值为String

?

?

?


? ?如果主键值为Int型

??

或者

?

?

?

注:@@IDENTITY只是SQL Server的写法,其他数据库也有相关的属性。


(2).Update,和Delete返回为修改数据影响的条数;

.SQL模糊查询的两种方法

(1).如果是模糊查询,在关键字传入前加‘%’; 例:String keyword=”%”+keyword+”%”;

?

(2).配置文件的写法:?select name,sex from t_user where name like '%$name$%'?

?

.在ibatis的bean.xml配置文件中,日期的转换

?

?

?

bean.xml文件:

?

?

?

.xmlResultName的运用 详细输出结果,直接把查存出来的结果映射成XML document

? ?<select id="getUser" parameterresultxmlResultName="person">

? ? <![CDATA[?

? ? ? ? select name,sex from t_user where id = #id#?

? ? ?]]>

? ?</select>


String xml= (String)sqlMapClient.queryForObject("getUser",user );

System.out.println(xml);


<?xml version="1.0" encoding="UTF-8"?>

? ?<person>

? ? ? <name>we are good !</name>

? ? ? <sex>2</sex>

? ?</person>

.分页功能的实现

). 用ibatis自带的分页功能,但是自带分页是把所有数据读入内存再分页的,所以必须自己覆写LimitSqlExecutor方法,

). 直接使用limit实现

.ibatis的IDE:http://ibatis.apache.org/ibator.html

.容易出错的地方 :

) 在parameterMap和resultMap中,字段数据类型是java.sql.Types类定义的常量名称。常用的数据类型包括BLOB,CHAR,CLOB,DATE,LONGVARBINARY, INTEGER,NULL,NUMERIC,TIME,TIMESTAMP和VARCHAR等。?

) 对于数据表中NULLBALE的字段,必须在parameterMap和resultMap中指定字段的数据类型。?

) 对于数据类型是DATE,CLOB或BLOB的字段,最好在parameterMap和resultMap中指定数据类型。?

) 对于二进制类型的数据,可以将LONGVARBINARY映射成byte[]。?

) 对于文本类型较大的数据,可以将CLOB映射成String。?

) Java Bean必须拥有缺省的构造器(即无参数的构造器)。?

) Java Bean最好实现Serializable接口,以备应用的进一步扩展。

.曾经写了一个ibatis动态查询的例子:

排序代码如下:

?

竟然无法排序,后来查了下资料,把“#”改成了“$”就可以了。

现总结下经验:#xxx# xxx代表是属性值,map里面的key或者是你的pojo对象里面的属性,ibatis会自动在它的外面加上引号,表现在sql语句是这样的 where xxx = 'xxx' ;而$xxxx$ 则是把xxxx作为字符串拼接到你的sql语句中,比如 order by topicId , 如果你不用$来拼接而用#的话,外面就会被加上引号,比如你的语句这样写 ... order by #xxx# (xxx就是你传进来的字符串topicId),ibatis 就会把他翻译成 order by 'topicId' 这样就报错了,用$的结果就是这样 order by topicId。

.ibatis通用sql语句可以单独定义如:

?

?

读书人网 >软件架构设计

热点推荐