Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 关于 iBATIS 的几点补充
【标  题】:关于 iBATIS 的几点补充
【关键字】:iBATIS
【来  源】:http://blog.csdn.net/fhway/archive/2006/09/22/1264761.aspx

关于 iBATIS 的几点补充

Your Ad Here  
14.6. iBATIS 2.09以后SQLMap支持动态表名
 Sample :
 <select id ="getRighe" 
         remapResults ="true"
         resultMap ="resultRighe" 
         parameterClass ="java.util.Map" >
              select * from
                       $tablePrefix$_righe
              where IDUser = #IDUser#
 </ select >
 
java code :
param.put("tablePrefix", "NAG");
param.put("IDUser", IDUser);
utente = (Riga)getSqlMapClientTemplate().queryForObject("getRighe", param);
 
 
14.7. Parameter Map Inline Parameter
具有 parameterMap 的statement中用?表示变量的占位符;而 Inline Parameter则用#varName#. 当使用基本类型包装类代替Java Bean时,切记要使用#value#作为参数。
      <parameterMap id=”insert-product-param” class=”com.domain.Product”>
             <parameter property=”id”
                  jdbcType=”NUMERIC”
               javaType=”int”
               nullValue=”-9999999”/>
             <parameter property=”description”
               jdbcType=”VARCHAR”
               nullValue=”NO_ENTRY”/>
</parameterMap>
<statement id=”insertProduct”
             parameterMap=”insert-product-param”>
             insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (?,?);
</statement>
 
<statement id=”insertProduct”
       parameterClass=”com.domain.Product”>
       insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
       values (#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#);
</statement>
 
14.8. 复杂类型属性
    <resultMap id=”get-product-result”
               class=”com.ibatis.example.Product”>
               <result property=”id” column=”PRD_ID”/>
               <result property=”description” column=”PRD_DESCRIPTION”/>
               <result property=”category”
                              column=”PRD_CAT_ID”
                              select=”getCategory”/>
</resultMap>
<resultMap id=”get-category-result”
                  class=”com.ibatis.example.Category”>
                  <result property=”id” column=”CAT_ID”/>
                  <result property=”description” column=”CAT_DESCRIPTION”/>
</resultMap>
<statement id=”getProduct”
                  parameterClass=”int”
                  resultMap=”get-product-result”>
                  select * from PRODUCT where PRD_ID = #value#
</statement>
<statement id=”getCategory”
                  parameterClass=”int”
                  resultMap=”get-category-result”>
                  select * from CATEGORY where CAT_ID = #value#
</statement>
上面的例子中,Product对象拥有一个类型为Category的category属性。因为category是复杂类型(用户定义的类型),JDBC不知道如何给它赋值。通过将category属性值和另一个mapped statement联系起来,为SQL Map引擎如何给它赋值提供了足够的信息。通过执行“getProduct”,“get-product-result”Result Map使用PRD_CAT_ID字段的值去调用“getCategory”。“get-category-result”Result Map将初始化一个Category对象并赋值给它。然后整个Category对象将赋值给Product的category属性。
使用一个联合查询和嵌套的属性映射来代替两个查询statement。上面例子的解决方案是:
<resultMap id=”get-product-result” class=”com.ibatis.example.Product”>
      <result property=”id” column=”PRD_ID”/>
      <result property=”description” column=”PRD_DESCRIPTION”/>
      <result property=”category.id” column=”CAT_ID” />
      <result property=”category.description” column=”CAT_DESCRIPTION” />
</resultMap>
<statement id=”getProduct” parameterClass=”int” resultMap=”get-product-result”>
      select *
      from PRODUCT, CATEGORY
      where PRD_CAT_ID=CAT_ID
      and PRD_ID = #value#
</statement>
 
14.9. 配置Log4J
 # Global logging configuration
log4j.rootLogger=ERROR, stdout
 
# SqlMap logging configuration...
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
#log4j.logger.java.sql.ResultSet=DEBUG
 
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
 
14.10. 动态SQL语句
   <statement id="someName" resultMap="account-result" >
            select * from ACCOUNT
            <dynamic prepend="where">
                        <isGreaterThan prepend="and" property="id" compareValue="0">
                          ACC_ID = #id#
                        </isGreaterThan>
                        <isNotNull prepend=”and" property="lastName">
                          ACC_LAST_NAME = #lastName#
                        </isNotNull>
            </dynamic>
              order by ACC_LAST_NAME
</statement>
对于以上蓝色的单词就是 动态Mapped Statement 元素关系运算符(她包括一元和二元的很多类型,具体参见 注14.1. 点的内容)
 
JDOM使用详解及实例(一):【上一篇】
创业团队的思考:切不可技术主导:【下一篇】
【相关文章】
  • iBATIS和Spring在WEB开发中的应用(一)
  • iBATIS和Spring在WEB开发中的应用(二)
  • iBATIS和Spring在WEB开发中的应用(三)
  • IBatis.Net 中的数据类型转换
  • spring、ibatis控制oracle分页的问题
  • IBatis中的强制刷新缓存
  • 最简单的iBatis入门例子
  • iBatis对批量update的支持
  • 使用IBatis作数据缓存
  • 解决IBatis中的多对一映射n+1问题
  • 【随机文章】
  • 关于微软的终端服务
  • Windows批处理功能配合脚本还是很强大的!(4)
  • 救助严重烧伤女童孔燕(恳请DUDU暂时不要转移)
  • 要找个GF了
  • 用BootSkin轻松换XP启动画面
  • 两大操作系统:Windows和Linux比较之二
  • Samba服务器的安装配置和应用
  • 下一代网络的核心:软交换
  • PHP4与PHP3中一个不兼容问题的解决方法
  • 调用类型
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.