zoukankan      html  css  js  c++  java
  • MyBatis传入多个参数的问题

    转自:https://www.cnblogs.com/mingyue1818/p/3714162.html

    一、单个参数:

    复制代码
    public List<XXBean> getXXBeanList(String xxCode);  
    
    <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">
    
      select t.* from tableName t where t.id= #{id}  
    
    </select>  
    
    其中方法名和ID一致,#{}中的参数名与方法中的参数名一直, 我这里采用的是XXXBean是采用的短名字,
    
    select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。
    复制代码

    二、多参数:

    复制代码
    public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  
    
    <select id="getXXXBeanList" resultType="XXBean">
    
      select t.* from tableName where id = #{0} and name = #{1}  
    
    </select>  
    
    由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
    复制代码

    三、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') 
    复制代码

    五、多参数传递之注解方式示:    

    复制代码
    例子:
     
    public AddrInfo getAddrInfo(@Param("corpId")int corpId, @Param("addrId")int addrId);
     
    xml配置这样写:
     
    <select id="getAddrInfo"  resultMap="com.xxx.xxx.AddrInfo">
           SELECT * FROM addr__info 
        where addr_id=#{addrId} and corp_id=#{corpId} </select> 以前在<select>语句中要带parameterType的,现在可以不要这样写。
    复制代码

    六、selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法:

    将参数放入Map,再取出Map中的List遍历。如下:

    复制代码
    List<String> list_3 = new ArrayList<String>();
    Map<String, Object> map2 = new HashMap<String, Object>();
    list.add("1");
    list.add("2");
    map2.put("list", list); //网址id

    map2.put("siteTag", "0");//网址类型
    复制代码
    public List<SysWeb> getSysInfo(Map<String, Object> map2) {
      return getSqlSession().selectList("sysweb.getSysInfo", map2);
    }
    复制代码
    <select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">
      select t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath
       from TD_WEB_SYSSITE t
       left join TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10
       WHERE t.siteTag = #{siteTag } 
       and t.sysSiteId not in 
       <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
           #{item}
       </foreach>
     </select>
    复制代码
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/sharpest/p/7871799.html
Copyright © 2011-2022 走看看