首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ibatis 小结

2012-11-04 
ibatis 总结SqlMap的配置是iBatis中应用的核心:1、命名空间:sqlMap namespacemune,在此空间外要引用此

ibatis 总结
SqlMap的配置是iBatis中应用的核心:


1、命名空间:  <sqlMap namespace="mune">,在此空间外要引用此空间的元素,则需要加上命名空间名。 (在三层架构中一般在持久层调用的时候通过命名空间名访问)

2、实体的别名:<typeAlias type="java.util.HashMap" alias="hmap"/>  也可以是自己写的实体类  <typeAlias alias="mune" type="com.pur.mune"/>

3、SQL入参parameterClass  插入语句入参:parametercolumn="ACC_ID"/>
        <result property="firstName" column="ACC_FIRST_NAME"/>
        <result property="lastName" column="ACC_LAST_NAME"/>
        <result property="emailAddress" column="ACC_EMAIL"/>


    </resultMap>    resultMap映射的结果的目的就是要将查询的结果集绑定到映射对象的属性上。    不管使用哪种返回值参数类型,其最终目的就是要把每条记录映射到一个类的对象或者对象集合上,如果有某个类属性映射不上,则在得到的这个对象或对象集合中这个属性为空。映射的属性可以是表与实体中的一部分。不要同时使用两种返回值参数类型,这样只会令人迷惑。

5、SQL中参数的引用     SQL中引用parameterClass的参数有三种方式:     iBatis内置支持的类型,比如int、string,使用#value#来引用,这个value是关键字,不可变。     map类型的参数,使用#keyName#来引用,keyName为键名。     复杂对象的参数,使用#propertyName#来引用,propertyName类属性的名字。

6、模糊查询中参数的引用    模糊查询是针对字符串而言的,如果遇到两个单引号要包含一个参数,则不能再用#来引用变量了,而应该改为$,比如:'%$varName$%',当然,也可以使用 '%' || #varname# || '%' 来绕过此问题。

7、SQL片段       可以通过<sql id="sql_xxx">...</sql>定义SQL片段,然后<include refid="sql_xxx"/>来在各种语句中引用。达到服用目的,

8、动态SQL      可以通过使用动态SQL来组织灵活性更大的更通过的SQL,这样极大减少了编码量,是iBatis应用的第二大亮点。     比如:一个动态的where条件                <dynamic prepend="where">

                        <isNotEmpty prepend="and" property="$$$$$">
                                $name like '%'|| #$name# ||'%'
                        </isNotEmpty>
                        <isGreaterThan prepend="and" property="$$$$$" compareValue="$$$number">
                                $code like '%'|| #$code# ||'%'
                        </isGreaterThan>


                </dynamic>     当然,prepend表示链接关键字,可以为任何字符串,当为sql关键字时,iBatis自动判断是否应该添加该关键字。该语法也很简单,关键是要会用心思考组织动态SQL。    这里面有一点要注意:区别<isNotEmpty>和<isNotNull>区别,当为空空串时<isNotEmpty>返回true,当为空串时<isNotNull>返回真。

热点排行