一、单个参数

  1、基本数据类型

    (1)直接使用

      List<ChargeRuleDO> tests(long id);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{id}
      </select>
      #{}中的参数名与方法中的参数名一致

    (2)使用注解
      List<ChargeRuleDO> tests(@Param("aid") long bid);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{aid}
      </select>
      #{}中的参数名与方法中的@Param()里的参数名一致

  2、复杂数据类型(这里主要是指Java实体类)
    (1)直接使用
      List<ChargeRuleDO> tests(TestQO testQO);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{id} and t.rule_type=#{ruleType}
      </select>
      #{}中的参数名与方法中的参数的属性名一致

    (2)使用注解
      List<ChargeRuleDO> tests(@Param("atestQO") TestQO btestQO);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{atestQO.id} and t.rule_type=#{atestQO.ruleType}
      </select>
      #{}中的参数名与方法中的@Param()里的参数对应的属性名一致,而且必须写成"#{atestQO.id}"的格式,不能简写成"#{id}".

二、多个参数
  1、基本数据类型
    (1)直接使用
      List<ChargeRuleDO> tests(long id,String ruleType);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{0} and t.rule_type=#{1}
      </select>
      这里改用#{index},其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。

    (2)使用注解
      List<ChargeRuleDO> tests(@Param("id") long id,@Param("ruleType") String ruleType);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{id} and t.rule_type=#{ruleType}
      </select>
      #{}中的参数名与方法中的@Param()里的参数名一致

  2、复杂数据类型
    (1)直接使用
      尝试了两种取参数的方法都不行

    (2)使用注解
      List<ChargeRuleDO> tests(@Param("testQO")TestQO testQO,@Param("testQO2")TestQO2 testQO2);
      <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
        select * from t_charge_rule t where t.id = #{testQO.id} and t.rule_type=#{testQO.ruleType} and t.user_id=#{testQO2.uesrId}
      </select>
      #{}中的参数名与方法中的@Param()里的参数对应的属性名一致,而且必须写成"#{testQO.id}"的格式,不能简写成"#{id}".

  3、基本数据类型与复杂数据类型混合使用
    因为在多参数的情况下,复杂数据类型不能直接使用,所以这里主要尝试基本数据类型直接使用并且复杂数据类型使用注解这一种情况
    List<ChargeRuleDO> tests(long id,String ruleType,@Param("testQO2")TestQO2 testQO2);
    <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
      select * from t_charge_rule t where t.id = #{0} and t.rule_type=#{1} and t.user_id=#{testQO2.uesrId}
    </select>

三、List参数
  List<ChargeRuleDO> tests(List<long> list);
  <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
    select * from t_charge_rule t where t.id in
      <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
        #{item}
      </foreach>
  </select>

  以上是我遇到过的,并且曾经犯过错误的几种方式.当然还有别的一些传参方式,在这里我就不一一写出来了,大家可以自己去百度,等遇到了,我再补充.

MyBatis_传入参数的问题的更多相关文章

  1. MyBatis传入参数为集合、数组SQL写法

    参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合 ...

  2. WF4.0 工作流设计器 传入参数问题记录?

    在本公司的流程设计器 ,如果流程中使用了传入参数,应先定义 参数,然后再拖动节点,才能正确提交,否则出错,原因未查明,只观察到现象.

  3. MyBatis传入参数为集合 list 数组 map写法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...

  4. web接入层 传入参数的格式化及web返回值传出数据的参数格式化,都要统一

    1.web接入层 传入参数的格式化及web返回值传出数据的参数格式化,都要统一. 比如acSpace中, 传入层参数@RequestBody javaBean对象.统一转换为javabean传入参数. ...

  5. python 传入参数返回的时候好像有些时候会出现莫名其妙的循环

    def handle_field(name, s_len, s): #some code #return s would error but return not.... #return s for ...

  6. C++函数的传入参数是指针的指针(**)的详解

    要修改变量的值,需要使用变量类型的指针作为参数或者变量的引用.如果变量是一般类型的变量,例如int,则需要使用int 类型的指针类型int *作为参数或者int的引用类型int&.但是如果变量 ...

  7. gcc向待编译源文件传入参数的方法

    gcc有两种方法向待编译源文件传入参数 第一种 利用–Dmacro=name 编译选项,详见gcc -D选项 第二种 利用链接脚本(*.lds)传入参数,类似于ADS的编译器参数可以被待编译源文件调用 ...

  8. delphi7调用webservice Java 传入参数为空

    在delphi7中,new-webservices-wsdl importer中输入wsdl地址,会自动生成wsdl单元代码.在调用时,传入参数到服务器端时为空了. 网上说缺少 InvRegistry ...

  9. C语言的本质(16)——函数接口的传入参数与传出参数

    如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcp ...

随机推荐

  1. Code+ B 汀博尔【二分答案】

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld 题目描述 有 n 棵树,初始时每棵树的高度为 Hi,第 ...

  2. CodeChef February Challenge 2018 Broken Clock (三角函数推导 + 矩阵快速幂)

    题目链接  Broken Clock   中文题面链接 令$cos(xα) = f(x)$ 根据三角函数变换公式有 $f(x) = \frac{2d}{l} f(x-1) - f(x-2)$ 我们现在 ...

  3. 【bzoj2190】【仪仗队】欧拉函数+线性筛(浅尝ACM-J)

    向大(hei)佬(e)势力学(di)习(tou) Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪 ...

  4. [POI2014]Criminals

    题目大意: 给你一个长度为$n(n\le10^6)$的颜色序列,其中每个颜色互不相同.两个人$A$和$B$分别从某个点出发从左往右.从右往左任意地选择颜色,然后在中间的某一点相遇.分别给出两人所选择的 ...

  5. redis 安装并且设置开机后台自动启动(转)

      1,安装redis wget http://download.redis.io/releases/redis-2.8.8.tar.gz .tar.gz cd redis- make 2,建立Red ...

  6. Visio中汇总两个箭头

    RT,相似度和信任度矩阵融合,两个箭头,选中其中一个,可以选格式--线条--终点选无,或者在快捷那选线条.

  7. 查看sqlserver的端口号

    背景 这几天想写一个使用java连接sqlserver的数据库连接测试程序.但是在查看数据库连接字符格式以后发现需要sqlserver数据库服务的端口号.在安装sqlserver的时候也没有提到端口号 ...

  8. EasyUi datagrid鼠标的悬停效果

    /*easyui,鼠标划过悬浮,显示一个小提示框的方法*/ { field : 'goodsName', title : '标的描述', width : 200, align : 'center', ...

  9. python3.6使用pickle序列化class

    from library.connecter.database.mongo import Op_Mongo a = pickle.dumps(Op_Mongo) #序列化 b = pickle.loa ...

  10. Makefile之“=”、":="、“+=”、“?=”

    Makefile之“=”.":=".“+=”.“?=”中几个的区别: 1.”=“符号 =表示个变量赋值: 注意: 当变量A被赋值给变量B时(B=A),这里A可以的这条指令之前定义的 ...