zoukankan      html  css  js  c++  java
  • Mybatis参数总结(转载)

    转载自:

    MyBatis传入多个参数的问题

    mybatis传递参数总结

     

    一、单个参数

    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()里的参数名一致

     

    三、Map封装多参数:  

    复制代码
    public List<XXXBean> getXXXBeanList(HashMap map);  
    
    <select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
    
      select 字段... from XXX where id=#{xxId} code = #{xxCode}  
    
    </select>  
    
    其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。 
    复制代码

     四、List封装in:

    复制代码
    public List<XXXBean> getXXXBeanList(List<String> list);  
    
    <select id="getXXXBeanList" resultType="XXBean">
      select 字段... from XXX where id in
      <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
        #{item}  
      </foreach>  
    </select>  
    
    foreach 最后的效果是select 字段... from XXX where id in ('1','2','3','4') 
    复制代码

     

          

        
          

  • 相关阅读:
    你不知道的 JavaScript 系列中( 21 ) -尽量不要使用 Object()/Function()/RegExp()
    你不知道的 JavaScript 系列中( 20 ) - 永远不要创建和使用空单元数组
    你不知道的 JavaScript 系列中( 19 ) - 封装对象拆封
    你不知道的 JavaScript 系列中( 18 ) - 封装对象包装
    你不知道的 JavaScript 系列中( 17 ) - 内部属性[[Class]]
    你不知道的 JavaScript 系列中( 16 ) - 原生函数
    node 切换 安装
    Mac  nginx  安装
    cnpm 安装
    2020年面试及入职新公司的痕迹
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6869078.html
Copyright © 2011-2022 走看看