1  parameterClass  是 SQL要传进来的参数的类型。(通常可以是Map对象,也可以是基础数据类型)

2  resultMap也是你要返回的值类型,字面上理解,它就是结果集的映射,就是将返回的记录逐个字段的映射赋值给对象的属性上。其实如果没有特殊需求的话我们完全可以使用resultclass来代替它,因为如果字段与属性一模一样的话,查询出来数据集会自动匹配到resultclass指定的类的实例对象,如果字段名不在属性中的话,那这个字段将不会被返回的实例体类对象接受,相当于没有查询出这个字段一样的。

resultMap 有一个重要的发生是class,它将决定这个resultmap对应的实例的类,换句话讲,它的作用是指出结果集要映射的数据类型。

3 resultclass 指的是在select查询中的返回数据类型

<![CDATA[ ----sql-----]]>含义

SQL中经常有与xml规范相冲突的字符对xml映射文件的合法性造成影响。<![CDATA[ ]] 标记来避免冲突,但是在SQl 配置中有动态语句的时候,还是有一些细节需要注意。

有时候"  <= "  会对xml映射文件的合法性造成影响。

 1 <select id="find" parameterClass="java.util.Map" resultClass="java.lang.Long">
 2 <![CDATA[
 3 select id
 4 from tableA a,
 5      tableB b
 6  <dynamic prepend="WHERE">
 7  <isNotNull prepend="AND" property="startDate">
 8   a.act_time >= #startDate#
 9   and a.act_time <= #endDate#
10   and a.id = b.id
11  </isNotNull>
12  </dynamic>
13   ]]>
14 </select>  

View Code

在时候,将整个sql语句用<![CDATA[ ]]>标记来避免冲突,在一般情况下都是可行的,但是由于  sql配置中有动态语句 (where  部分),将导致系统无法识别动态判断部分,导致整个SQl语句非法。

 1 <select id="find" parameterClass="java.util.Map" resultClass="java.lang.Long">
 2 select id
 3 from tableA a,
 4      tableB b
 5  <dynamic prepend="WHERE">
 6  <isNotNull prepend="AND" property="startDate">
 7   a.act_time >= #startDate#
 8   and a.act_time <= #endDate#
 9   and a.id = b.id
10  </isNotNull>
11  </dynamic>
12 </select>

View Code

所以,正确的做法,缩小范围,只对有字符冲突的部分进行标记并调整。

 1 <select id="find" parameterClass="java.util.Map" resultClass="java.lang.Long">
 2 select id
 3 from tableA a,
 4      tableB b
 5  <dynamic prepend="WHERE">
 6  <isNotNull prepend="AND" property="startDate">
 7   a.act_time >= #startDate#
 8   <![CDATA[ and a.act_time <= #endDate#  ]]>
 9   and a.id = b.id
10  </isNotNull>
11  </dynamic>
12 </select>

View Code

总结,在CDATA的时候,只用把可能产生冲突的那段代码包含就可以了,不要盲目的包含。

#  与  $  的 区别

ibatis中,我们使用 sqlMap 进行 sql查询时需要引用 参数,在参数引用中遇到的符号  #  和 $之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:

select  *  from table  where  id =#id# ,其中如果字段为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。

select * from table where id =$id$,如果字段id为整型,sql语句就不会出错,但是如果字段id为字符型,那么sql语句应该写成select *  from table where id ='$id$'

转载于:https://www.cnblogs.com/shuanlei/p/4517799.html

ibatis 配置参数解析相关推荐

  1. move_base配置参数解析

    文章目录 costmap_common_params.yaml dwa_local_planner_params.yaml global_costmap_params.yaml local_costm ...

  2. 关于RedisPool配置参数

    配置参数解析 maxTotal 资源池中最大连接数 默认值8 建议值 maxIdle 资源池允许最大空闲的连接数 默认值8 建议值 minIdle 资源池确保最少空闲的连接数 默认值0 建议值 blo ...

  3. springboot 获取application参数_(最新 9000 字 )Spring Boot 配置特性解析

    一.概述 目前Spring Boot版本: 2.3.4.RELEASE,这更新的速度也是嗖嗖的了,随着新版本的发布,也一步步针对公司基础组件进行了升级改造,其中很重要的一块就是配置文件的更新(虽然目前 ...

  4. 【Ceph】Ceph常用命令|Ceph配置参数和命令解析|ceph管理

    目录 常用命令 查看状态 启动/停止 分类命令 ceph mon ceph mds ceph osd ceph pg ceph osd pool rados ceph-deploy 块设备|rbd的一 ...

  5. JVM启动参数解析(转)

    JVM启动参数解析(转) (2010-03-17 19:45:19) 转载 标签: jvm 启动参数 it 分类:他山之石攻己之玉 dk1.4.2 JVM官方地址:http://java.sun.co ...

  6. java+hadoop配置参数_将Hadoop参数传递给Java代码

    我有一个Uber jar执行一些级联ETL任务. jar的执行方式如下: hadoop jar munge-data.jar 我希望在作业启动时将参数传递给jar,例如 hadoop jar mung ...

  7. Android.mk 配置参数

    Android.mk 的可配置参数会比较多,但是常用的可能很少.在进行多项目 ndk 共享的时候,如果对各个参数比较了解,对项目的结构优化有不小的好处. 0x00 LOCAL_PATH 根据 Andr ...

  8. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  9. php+php-fom+nginx配置参数调优详解

    文章目录 一.前言 1.mysql配置参数: 2.注意 二.php参数配置及讲解 1.phpini的基本设置 2.php参数设置 三.php-fpm设置 1.设置子进程数,增加并发量 2.防止频繁出现 ...

最新文章

  1. JAVA 和JAVAC命令行
  2. 华为数据中心服务器数量,IDC 与华为联合发布《全闪存数据中心白皮书》,目前已有多个应用...
  3. 企业微信提示服务商未响应请求,将无法获取用户事件回调
  4. 微软推中文Live地图搜索服务与Office集成
  5. IEnumerable和IEnumerator详解
  6. php框架 swoop_PHP Form Validation
  7. 豪情-2014年年终总结
  8. Java中int为什么占四个字节?
  9. JavaScript从入门到放弃-JavaScript历史介绍
  10. python-字符串基础
  11. C# Readonly和Const的区别
  12. 如何修改MyEclipse的默认工作路径Workplace
  13. 华硕T100TA安装凤凰OS
  14. Nginx反向代理(解决纯前端项目部署到服务器上无法访问接口数据)
  15. windows系统redis部署配置(IP端口服务)配置
  16. 杜教筛如何推式子/堆柿子
  17. [POJ2352] Stars 夜空星辰 - 树状数组
  18. PAKDD2018小结
  19. LeetCode刷题1894-中等-找到需要补充粉笔的学生编号
  20. the transaction flow in v1.0 of Hyperledger Fabric(fabric1.0交易流程)

热门文章

  1. Android TextView中设定个别文字字体显示格式
  2. 致所有IT工程师的信(网络工程师的发展方向)
  3. Ubuntu侧边任务栏自动隐藏
  4. Java2WSDL 和 WSDL2Java(Axis)
  5. 用今日头条的方法推荐公开课
  6. 格式化输出和printf命令
  7. springmvc + jquery 错误.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
  8. 将页脚保持在页面的底部——Javascript+Css实现
  9. java自定义注解简单小例子
  10. 做好十足准备面字节跳动,五面都过了,HR告诉我这个原因我被刷了...