1,在公司项目yuda遇到的传入in语句,如果直接拼接in语句:in (....),sqlmap中使用#...#输出是不行的。

为需要使用:

第三种:in后面的数据确定,使用string传入 

        <select id="GetEmailList_Test2" parameterClass="TestIn" resultClass="EmailInfo_"> 

            select * 

            from MailInfo with (nolock) 

            where ID in 

            ($StrValue$) 

        </select> 

调用 

                Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test2", "1,2,3");

参考自:https://blog.csdn.net/yangkai_hudong/article/details/25130555

一下内容来自参考:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一种:传入参数仅有数组 

       <select id="GetEmailList_Test"  resultClass="EmailInfo_"> 

            select * 

            from MailInfo with (nolock) 

            where ID in 

                <iterate open="(" close=")" conjunction="," > 

                    #[]# 

                </iterate> 

        </select> 

调用 

            string[] strValue = new string[] { "1", "2", "3" }; 

            Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test", strValue ); 

       第二种:传入参数有数组,且有其他数据 

        <select id="GetEmailList_Test3" parameterClass="TestIn" resultClass="EmailInfo_"> 

            select  top(#Count#)* 

            from MailInfo with (nolock) 

            where ID in 

            <iterate open="(" close=")" conjunction="," property="ArrValue" > 

                #ArrValue[]# 

            </iterate> 

        </select> 

调用 

            TestIn ti = new TestIn(); 

            ti.Count = 1; 

            ti.ArrValue = strValue; 

            return Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test3", ti); 

实体类: 

   public class TestIn 

    { 

        private int count; 

        public int Count 

        { 

            get { return count; } 

            set { count = value; } 

        } 

        private string[] arrValue; 

        public string[] ArrValue 

        { 

            get { return arrValue; } 

            set { arrValue = value; } 

        } 

    } 

       第三种:in后面的数据确定,使用string传入 

        <select id="GetEmailList_Test2" parameterClass="TestIn" resultClass="EmailInfo_"> 

            select * 

            from MailInfo with (nolock) 

            where ID in 

            ($StrValue$) 

        </select> 

调用 

                Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test2", "1,2,3"); 

其他信息: 

Iterate的属性: 

prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选) 

property -类型为java.util.List的用于遍历的元素(必选) 

open -整个遍历内容体开始的字符串,用于定义括号(可选) 

close -整个遍历内容体结束的字符串,用于定义括号(可选) 

conjunction -每次遍历内容之间的字符串,用于定义AND或OR(可选) 

<iterate>遍历类型为java.util.List的元素。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2,使用hashmap传参

虽然ibatai sql map可以配置多个参数,但sqlMap只能传入一个参数,我们有两种方式,一是把我们的参数封装成一个类,通过set/get取值的方式给sql map注入参数,二是通过hashMap(可以组合一些不是同一个pojo的参数有优势)

<select id="getPeopleList" resultClass="model.User" parameterClass="java.util.Map">

  <![CDATA[

     select * from test where name like '%$name$%'

  ]]>

</select>

Map map=new HashMap();

   map.put("name", "gaoxiang");    key为参数名,value位数据

   List list = sqlMap.queryForList("getPeopleList", map);

在这里注意ibatis中#和$符号的区别:https://blog.csdn.net/geyouchao/article/details/51817747

https://blog.csdn.net/kiss_vicente/article/details/7602900

ibatis 多种传参方式的更多相关文章

  1. PHP四种传参方式

    test1界面: <html> <head> <title>testPHP</title> <meta http-equiv = "co ...

  2. python 计算机发展史,线程Process使用 for循环创建 2种传参方式 jion方法 __main__的解释

    ########################总结################## #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬 ...

  3. Vue中router两种传参方式

    Vue中router两种传参方式 1.Vue中router使用query传参 相关Html: <!DOCTYPE html> <html lang="en"> ...

  4. axios的各种传参方式

    axios的各种传参方式 1. params方式 axios({ url: '/users', method: 'get', params: { id: '11111', name: '22222' ...

  5. vue param和query两种传参方式

    1.传参方式 query传参方式 this.$router.push({ path: "/home", query: {code:"123"} }) param ...

  6. 浅谈C++三种传参方式

    浅谈C++三种传参方式 C++给函数传参中,主要有三种方式:分别是值传递.指针传递和引用传递. 下面通过讲解和实例来说明三种方式的区别. 值传递 我们都知道,在函数定义括号中的参数是形参,是给函数内专 ...

  7. Mybatis的几种传参方式,你了解吗?

    持续原创输出,点击上方蓝字关注我 目录 前言 单个参数 多个参数 使用索引[不推荐] 使用@Param 使用Map POJO[推荐] List传参 数组传参 总结 前言 前几天恰好面试一个应届生,问了 ...

  8. vector作为参数的三种传参方式

    c++中常用的vector容器作为参数时,有三种传参方式,分别如下(为说明问题,用二维vector): function1(std::vector<std::vector<int> ...

  9. vue的三种传参方式

    <template> <div> <router-link :to="{'name':'x',params:{'type':'users'}}"> ...

随机推荐

  1. nginx负载均衡后端tomcat无法加载js资源

    JS或css无法完全加载 nginx的代理缓存区,默认较小导致部分文件出现加载不全的问题,比较典型的如jQuery框架,可以通过配置调整nginx的缓存区即可.主要参考proxy参数 最终完整配置如下 ...

  2. PHP中$_POST和$_GET的用法

    post和get是指:页面提交的两种方式get:参数都体现在url上,可以用于翻页,简单查询,get只能接收2M以下的内容,所以有局限性,另外由于内容是可见的,安全性就下降了,post:用于页面表单 ...

  3. nodejs和ionic小助手

    nodejs已经安装完成的情况下,安装ionic小助手 win+r打开cmd. 命令: 1.node -v(查看版本信息) 2.npm -v(查看版本信息) 3.npm install -g cnpm ...

  4. vscode开发c#

    转载自: http://www.cnblogs.com/lxhbky/p/6673230.html http://www.cnblogs.com/lxhbky/p/6692065.html 一.环境安 ...

  5. Confluence 6 管理应用服务器内存设置

    应用服务器中的最小和最大 JVM Heap 空间配置将会影响系统的性能.Confluence 管理员可能希望对默认的配置进行修改,基于你系统的负载不同配置情况也会有所不同,请参考页面 Server H ...

  6. NSLayoutConstraint 使用详解 VFL使用介绍

    注意 使用前必须先取消所有的你想设置View 的 Autoresizing 属性 因为 Autoresizing  Layout不能共存  系统默认是 Autoresizing for v in su ...

  7. 浅谈java中bigInteger用法

    1.赋值: BigInteger a=new BigInteger("1"); BigInteger b=BigInteger.valueOf(1); 2.运算: ① add(); ...

  8. Memcached常用语法与java连接服务

    memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...

  9. (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey

    <Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...

  10. LeetCode(76): 最小覆盖子串

    Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = &q ...