zoukankan      html  css  js  c++  java
  • ibatis 多种传参方式

    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

  • 相关阅读:
    (SenchaTouch+PhoneGap)开发笔记(2)开发环境搭建二
    Sql语句复习
    冒泡排序
    微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)
    Ext4 ComboBox组件使用
    ExtJs 进度条(轮询)
    如何替换掉.net toolStrip控件溢出按钮背景图
    easyui-menu 宽度自适应
    Python之入门学习
    servlet和filter的区别
  • 原文地址:https://www.cnblogs.com/lirenhe/p/9774448.html
Copyright © 2011-2022 走看看