IBatis总结

原创文章,如需转载,请注明出处。

1.   IBatis简介

IBatis是以SQL为中心的持久化层框架,是一种半自动化ORM实现。

IBatis不但提供了对象与关系数据库之间的映射,同时提供操作方法与SQL间的直接映射,设计者可以直接为一个方法指定一条SQL语句,从而取得更加准确的数据。因为 IBatis sql 都保存到单独的xml文件中,有利于DBA sql 审核和优化。IBatis最大的特点就是小巧,上手很快,可维护性较好。

IBatis数据映射的工作流程图如图1所示:

 

1IBatis数据映射的工作流程图

2.   使用步骤
2.1 SQL Map 配置文件

SQL Map 配置文件中对<properties>< settings >< typeAlias >< transactionManager >< dataSource >< sqlMap >等进行配置。

2.2 SQL Map映射文件

SQL Map映射文件中,可以定义的Statement 类型有<statement><insert><update><delete><select><procedure>

      可以使用缓存模式,Cache3个重要属性是readOnlyserializetypeCache类型分为MEMORYLRUFIFOOSCACHE四种。

2.3编写DAO

DAO中,可以使用SqlMapClient提供的方法执行sql操作。

 

3.   开发过程中的注意点

1. Sequence主键,插入语句之前必须指定一个主键值给要插入的记录,否则无法插入。方法是在插入语句标签<insert....>之前配置上:

<insert id="addItemDO" parameterClass="TryItem">

      <selectKey keyProperty="id" resultClass="int" type="pre">

        select ITEM_ID.nextval as value from dual

    </selectKey>

            insert into item …

</insert>

 

2. 通过使用<![CDATA[……]]>,可以避免SQL 中与XML 规范相冲突的字符,如<=,>=,<,>

 

3. 模糊查询中参数的引用,应使用$,而不是#,比如:'%$varName$%',或者 '%' || #varname# || '%'。例子:TITLE like '%' || #keyWord# || '%'

 

4. SQL入参parameterClass.SQL中引用parameterClass的参数有三种方式:

IBatis内置支持的类型,比如intstring,使用#value#来引用,这个value是关键字,不可变。

map类型的参数,使用#keyName#来引用,keyName为键名。

复杂对象的参数,使用#propertyName#来引用,propertyName类属性的名字。

IBatis仅接受一个入参,当几个参数分布在不同对象中的时候,将这些对象的属性(或者对象本身put)到map中,然后一次传递给sql语句是非常有效。例如parameterClass="java.util.Map"

 

5. 返回值参数类型: 一种是对象类型resultClass="int",一种是resultMap=" ItemResultMap "。当查询结果列名和类属性名对应不上的时候,应该选择resultMap指定查询结果集类型。否则查询出来填充的对象属性为空(数字的为0,对象的为null)。

 

6. 动态SQLprepend表示链接关键字,可以为任何字符串,当为sql关键字时,IBatis自动判断是否应该添加该关键字。

例子:一个动态的where条件

<dynamic prepend="WHERE">

                 <isNotNull property="skin" prepend="and">

                   t.skin=#skin#

                 </isNotNull>

                 <isNotNull property="effi" prepend="and">

                   t.effect=#effi#

                 </isNotNull>            

</dynamic>

 

7. 不能自动识别null,就是匹配的字段不能为null,要么就必须为其设置当是null时的默认值。

8. ibatis打印sql语句。

为了方便跟踪调试,利用log4j把ibatis执行的sql语句,参数,执行结果打印出来是一个不错的做法,只要在在配置文件log4j.properties中加入以下代码就可以了:
log4j.logger.com.ibatis = DEBUG 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG 
log4j.logger.java.sql.Connection = DEBUG 
log4j.logger.java.sql.Statement = DEBUG 
log4j.logger.java.sql.PreparedStatement = DEBUG, fileout 
log4j.logger.java.sql.ResultSet = DEBUG 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值