zoukankan      html  css  js  c++  java
  • Mybatis (ParameterType) 如何传递多个不同类型的参数

    偶然碰到一个需要给xml传一个String类型和一个Integer类型的需求,当时心想用map感觉有点太浪费,所以专门研究了下各种方式。

    方法一:不需要写parameterType参数

    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开始

    方法二:基于注解(最简单)

    public List<XXXBean> getXXXBeanList(@Param("id")String id, @Param("code")String code);  
    <select id="getXXXBeanList" resultType="XXBean">
    
      select t.* from tableName where id = #{id} and name = #{code}  
    
    </select>  
    

    由于是多参数那么就不能使用parameterType, 这里用@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封装

    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> 
    

    总结

    传递list和map在资源消耗上肯定远大于方法一和方法二,但是有一些特殊的情形需要传递list,比如你需要传递一个id集合并批量对id进行sql操作然后再返回等等。所以都需要了解。

    https://www.jianshu.com/p/d977eaadd1ed

  • 相关阅读:
    ubuntu mint 开机启动项管理
    ubuntu mint 15 编译安装PHP开发环境
    cakephp recursive -1,0,1,2 速查
    git revert all changes
    windows环境变量修改立刻生效的办法
    windows7 mysql install
    ubuntu ll命令
    [Matlab]算法工匠视频1:数字信号处理仿真及实现 第一讲 信号源的产生和滤波1、2
    [Maltab]线性卷积、周期卷积及循环(圆周)卷积
    [C++]自编FFT(递归形式)
  • 原文地址:https://www.cnblogs.com/nqdxt/p/13399774.html
Copyright © 2011-2022 走看看