mybatis中String参数的传递

Keywords selectKeywords(@Param("key") String key);

可以在mapper方法的参数钱添加 @Param("key") 注意括号中相当于别名

mybatis中传递数组

转自:https://blog.csdn.net/s592652578/article/details/52871884/

1.foreach简单介绍:

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,

index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔符,

close表示以什么结束,

collection属性是在使用foreach的时候最关键的也是最容易出错的,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

(1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .

(2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .

(3)如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

实体:

  1. public class Employees {
  2. private Integer employeeId;
  3. private String firstName;
  4. private String lastName;
  5. private String email;
  6. private String phoneNumber;
  7. private Date hireDate;
  8. private String jobId;
  9. private BigDecimal salary;
  10. private BigDecimal commissionPct;
  11. private Integer managerId;
  12. private Short departmentId;
  13. }

···

Mapper:

  1. public interface EmployeesMapper {
  2. List<Employees> getEmployeesListParams(List<String> employeeIds);
  3. List<Employees> getEmployeesArrayParams(String[] employeeIds);
  4. List<Employees> getEmployeesMapParams(Map<String,Object> params);
  5. }

Mapper.xml

  1. <!--Array:forech中的collection属性类型是array,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
  2. <update id="disableSome" parameterType="Integer[]">
  3. update course set can_use = 0 where course_id in
  4. <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
  5. #{ids}
  6. </foreach>
  7. </update>
  8. <!--List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
  9. <select id="getEmployeesListParams" resultType="Employees">
  10. select *
  11. from EMPLOYEES e
  12. where e.EMPLOYEE_ID in
  13. <foreach collection="list" item="employeeId" index="index"
  14. open="(" close=")" separator=",">
  15. #{employeeId}
  16. </foreach>
  17. </select>
  18. <!--Array:forech中的collection属性类型是array,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
  19. <select id="getEmployeesArrayParams" resultType="Employees">
  20. select *
  21. from EMPLOYEES e
  22. where e.EMPLOYEE_ID in
  23. <foreach collection="array" item="employeeId" index="index"
  24. open="(" close=")" separator=",">
  25. #{employeeId}
  26. </foreach>
  27. </select>
  28. <!--Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId -->
  29. <select id="getEmployeesMapParams" resultType="Employees">
  30. select *
  31. from EMPLOYEES e
  32. <where>
  33. <if test="departmentId!=null and departmentId!=''">
  34. e.DEPARTMENT_ID=#{departmentId}
  35. </if>
  36. <if test="employeeIdsArray!=null and employeeIdsArray.length!=0">
  37. AND e.EMPLOYEE_ID in
  38. <foreach collection="employeeIdsArray" item="employeeId"
  39. index="index" open="(" close=")" separator=",">
  40. #{employeeId}
  41. </foreach>
  42. </if>
  43. </where>
  44. </select>

mybatis中String参数的传递的更多相关文章

  1. mybatis配置文件查询参数的传递

    通常来说,参数传递可以使用#与$进行编写,但是使用#的效率更高,使用$方式,查看日志更方便些,尤其是当执行的sql语句非常麻烦的时候. 1) 接口 形式 以下方式 [传递参数是一个实体] public ...

  2. MyBatis中传入参数parameterType类型详解

    前言 Mybatis的Mapper文件中的select.insert.update.delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型.本文主要给大家 ...

  3. Summary: Java中函数参数的传递

    函数调用参数传递类型(java)的用法介绍. java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清. (一)基本数据类型:传值,方法不会改变实参的值. public class Te ...

  4. mybatis中foreach参数过多效率很慢的优化

    foreach 后面in 传入的参数有1万条,#和$是有效率区别的,$的效率远高于#,上篇文章做了比较. 但没达到我的理想结果. 1. 更改方式,把foreach 去掉,改成拼装方式, 参数直接拼装成 ...

  5. 【WPF】将控件事件中的参数,传递到ViewModel中

    在MVVM模式下,在通常使用命令(Command)绑定的方式的时候 ,使用的是 CommandParameter 属性进行参数的传递. 但是很多时候,有一些事件我们需要使用其中的一些事件里面的参数,以 ...

  6. @Param注解在Mybatis中的使用 以及传递参数的三种方式

    第一种: Dao层的方法 public User selectUser(String name,String password); 对应的Mapper.xml <select id=" ...

  7. Java中String是“引用”传递

    如题,在java中这是一个典型的问题. 在stackoverflow上已经有很多相似的问题被提问,并且有很多不正确或不完整的答案.如果你不往深处想,这是一个很简单的问题.但如果深入思考,它却很让人迷惑 ...

  8. (转载)mybatis中传入参数是list或map

    原文地址:http://blog.csdn.net/aya19880214/article/details/41961235 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集 ...

  9. Java中String的 "引用" 传递

    1.来看一段有趣但又让人困惑的代码片段 public static void main(String[] args){ String x = new String("ab"); c ...

随机推荐

  1. zabbix添加自定义监控项目

    在zabbix里添加一个自定义监控项目,简单做个笔记,怕忘了 首先需要定义 zabbix_agentd.conf  中的 UnsafeUserParameters 修改为 UnsafeUserPara ...

  2. 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]

    一直以为中兴的这几个盒子只能通过ttl来破解,不过现在再也不用这么麻烦了,有了这个工具,前后破解不超3分钟!理论上支持所有中兴的iptv机顶盒的破解! 亲测中兴B760EV3.B860A.B860AV ...

  3. Cmake实践(Cmake Practice)第一部分

    参考资料地址:https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf 一.初识cmake 1. C ...

  4. C#串口数据收发数据

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  5. cpu资源长期使用率过高导致系统内核锁问题

    服务器跑大量高负载程序,会造成cpu soft lockup. 解决办法: #追加到配置文件中 echo 30 > /proc/sys/kernel/watchdog_thresh #查看 [r ...

  6. 自己实现HashSet

    HashSet的实现相对比较简单.它强依赖于HashMap,包括底层数据实际上就是存储于HashMap,由于HashMap在哈希碰撞下,如果value值相同,那么将会覆盖该value,HashSet正 ...

  7. 基于Dapper写的一个sqlhelp适用于多版本数据库

    ConnectionInit方法用于初始化数据库连接对象, 只需要修改databasetype参数即可进行适用各个版本的数据库, ExecuteNonQuery方法用于执行增.删.改操作,返回受影响的 ...

  8. React Router的Route的使用

    Route 是 React Router中用于配置路由信息的组件,每当有一个组件需要根据 URL 决定是否渲染时,就需要创建一个 Route. 1) path 每个 Route 都需要定义一个 pat ...

  9. python--第二十一/二天总结

    Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. 1 2 3 ...

  10. HTML5智能表单

    HTML5 智能表单 1.表单新增属性  ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...