本站首页    管理页面    写新日志    退出


«July 2020»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7228511
建立时间:2006年5月29日




[iBatis]关于 iBATIS 的几点补充
软件技术

lhwork 发表于 2008-3-11 16:24:27

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. 点的内容)


阅读全文(5847) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144422448 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号