程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> MyBatis傳入參數的問題,mybatis傳入參數

MyBatis傳入參數的問題,mybatis傳入參數

編輯:JAVA綜合教程

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()裡的參數名一致

  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>

 

  以上是我遇到過的,並且曾經犯過錯誤的幾種方式.當然還有別的一些傳參方式,在這裡我就不一一寫出來了,大家可以自己去百度,等遇到了,我再補充.

 

 

》》》》》》》》》如果有什麼地方寫錯了或者寫的不夠好,希望大大們能提出來。還有,歡迎留言評論,一起學習。《《《《《《《《《

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved