传递多个参数一般用在查询上,比如多个条件组成的查询,有以下方式去实现:

版本信息:

MyBatis:3.4.4

1、自带方法

    <select id="getUserArticlesByLimit" resultMap="resultUserArticleList">
select user.id,user.userName,user.userAddress,article.id as aid,article.title,article.content from user,article where user.id=article.userid and user.id=#{arg0} limit #{arg1},#{arg2}
</select>
public List<Article> getUserArticlesByLimit(int id,int start,int limit);
List<Article> articles=userMapper.getUserArticlesByLimit(1,0,2); 

说明,arg0...也可以写成param0...

2、直接传递对象

    <select id="dynamicIfTest" parameterType="Article" resultType="Article">
select * from article where 1 = 1
<if test="title != null">
and title = #{title}
</if>
<if test="content != null">
and content = #{content}
</if>
limit 1
</select>
public Article dynamicIfTest(Article article);
                Article inArticle = new Article();
inArticle.setTitle("test_title");
Article outArticle = userOperation.dynamicIfTest(inArticle);

3、使用@Praam标注

    <select id="dynamicChooseTest" resultType="Article">
select * from article where 1 = 1
<choose>
<when test="title != null">
and title = #{title}
</when>
<when test="content != null">
and content = #{content}
</when>
<otherwise>
and tile = "test_title"
</otherwise>
</choose>
</select>
public Article dynamicChooseTest(
@Param("title")
String title,
@Param("content")
String content);
Article outArticle2 = userOperation.dynamicChooseTest("test_title",null);

说明:这种方法同样可以用在一个参数的时候。

4、使用HashMap

<select id="getArticleBeanList" resultType="ArticleBean">
  select * from article where id = #{id} and name = #{code}
</select>

说明:parameterType="hashmap"可以不用写。

public List<ArticleBean> getArticleBeanList(HashMap map); 
                HashMap<String, Object> map = new HashMap<String, Object>();
map.put("id", 1);
map.put("code", "123");
List<Article> articless3 = userOperation.getArticleBeanList(map);

特殊的HashMap示例,用在foreach节点:

    <select id="dynamicForeach3Test" resultType="Article">
select * from article where title like "%"#{title}"%" and id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
public List<Article> dynamicForeach3Test(Map<String, Object> params);
                HashMap<String, Object> map = new HashMap<String, Object>();
map.put("title", "title");
map.put("ids", new int[]{1,3,6});
List<Article> articless3 = userOperation.dynamicForeach3Test(map);

5、List结合foreach节点一起使用

    <select id="dynamicForeachTest" resultType="Article">
select * from article where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
public List<Article> dynamicForeachTest(List<Integer> ids);
                List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(3);
ids.add(6);
List<Article> articless = userOperation.dynamicForeachTest(ids);

6、数组结合foreach节点一起使用

    <select id="dynamicForeach2Test" resultType="Article">
select * from article where id in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
public List<Article> dynamicForeach2Test(int[] ids);
                int[] ids2 = {1,3,6};
List<Article> articless2 = userOperation.dynamicForeach2Test(ids2);

参考:

http://www.yihaomen.com/article/java/426.htm

MyBatis3-传递多个参数(Multiple Parameters)的更多相关文章

  1. C++ Templates(1.3 多模板参数 Multiple Template Parameters)

    返回完整目录 目录 1.3 多模板参数 Multiple Template Parameters 1.3.1 为返回类型设置模板参数参数 Template Parameters for Return ...

  2. Mybatis(二)参数(Parameters)传递

    Mybatis参数(Parameters)传递  1..单个参数 可以接受基本类型,对象类型,集合类型的值.这种情况MyBatis可直接使用这个参数,不需要经过任何处理. <!-- 根据id查询 ...

  3. Dao层向sql语句传递多个参数

    手动封装: serviceImpl层 Map<String, Object> params = new HashMap<String, Object>(2);params.pu ...

  4. 如何为Windows Forms应用程序添加启动参数(Start-Up Parameters)

    很多场合下,我们需要通过命令行或者快捷方式在Windows Forms程序启动时向其传递参数. 这些参数可能是用来加载某一个文档,或者是应用程序的初始化配置文件. 特别是对那些需要高度自定义配置的大程 ...

  5. Can't bind multiple parameters ('header' and 'parameters') to the request's content.

    2019-01-23 15:46:29.012+08:00 ERROR [6]: System.InvalidOperationException: Can't bind multiple param ...

  6. 转 zabbix 自动发现和 zabbix自定义用户key与参数User parameters

    ########31 https://www.cnblogs.com/yjt1993/p/10883345.html 1.概念 在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些 ...

  7. 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数

    [问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...

  8. C#使用结构来传递多个参数

    当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...

  9. 转载 C#中使用结构来传递多个参数

    C#中当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } c ...

随机推荐

  1. Hadoop Hive概念学习系列之HiveQL编译基础(十)

    由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行.不包含聚合和连接的简单SELECT语句可以使用一个单独的只包含Map阶段的任务实现.使用GROUP ...

  2. Python(1)-第一天

    PTVS下载地址:https://pytools.codeplex.com/releases/view/109707 Python下载地址:https://www.python.org/downloa ...

  3. System.AppDomain类详解(二)

    进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象.一个process可以存在多个AppDomain.各个AppDomain之间的数据时相互独立的.一个线程可以穿梭多个AppD ...

  4. VMware workstation 14 CentOs 7.5.1804 虚拟机网卡设置为NAT模式并设置固定IP

    一.背景知识     虚拟机网络模式 无论是vmware workstation,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3. ...

  5. 网页添加qq咨询

    <style>.box{ width:130px; height:150px; position:fixed; right:0px; top:30%; z-index:999; borde ...

  6. Elasticsearch--预匹配器

    当你对一个无限输入数据流进行操作并搜索特定事件的出现时,可以使用此模型.可以用于检测监控系统中的故障. 在新版本中的知识点位置https://www.elastic.co/guide/en/elast ...

  7. 【转】jvm类加载

    类加载机制 JVM把class文件加载的内存,并对数据进行校验.转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制. 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命 ...

  8. ElasticSearch学习笔记--一些规范,会持续更新

    我们在ElasticSearch中存储的数据一般是采用json的格式存储,所以ElasticSearch中有一个叫Mapper的东西用来定义jsonschema来规范这个json 但是这个mapper ...

  9. Java学习1_一些基础1——16.5.4

    每个java程序中都必须有一个main方法,格式为: public class ClassName { public static void main(String[] args) { program ...

  10. 梦想CAD控件安卓界面控制

    CAD控件界面上所有元素都可以控制显示或隐藏,下面将逐一介绍详细用法. 设置工具文件 MxFunction.setToolFile 设置工具文件.详细说明如下: 参数 说明 String sFile ...