• iBatis.Net 动态查询


    动态查询

    iBatis.Net提供查询的灵活性主要体现在支持动态查询上,即可以动态的生成SQL语句。也只有掌握好动态查询,才能充分的感受iBatis框架所带来的便捷和高效。这也是很多软件公司和开发人员选择该框架的重要原因。

    在开发中经常遇到这种查询,当用户没有输入查询条件时查询所有记录,如果用户输入了查询条件将根据查询条件进行查询。比如上面提到的条件查询,如果没有输入用户名信息将返回所有用户信息。这个时候就需要用到动态查询,根据参数值是否为空,生成两条不同的SQL语句。XML数据映射配置信息为:

    <selectid="SelectSysuserDynamic1"parameterClass="System.Collections.IDictionary"resultMap="SysuserResult">

    <![CDATA[ SELECT * FROM DEAN.SYSUSER ]]>

    <dynamicprepend="WHERE">

    <isNotEmptyprepend="AND"property="LOGINNAME">

    <![CDATA[ LOGINNAME = #LOGINNAME# ]]>

    </isNotEmpty>

    </dynamic>

    </select>

    dynamic元素用来区分SQL语句的动态部分,dynamic是一个可选项,它中间可以包含任意数据的条件元素。上面的配置信息会根据输入参数LOGINNAME的值是否为空生成两条SQL语句。如果为空SELECT * FROM DEAN.SYSUSER,如果不为空SELECT * FROM DEAN.SYSUSER WHERE LOGINNAME = #LOGINNAME#。

    调用程序代码为:

    protectedvoid Button3_Click(object sender, EventArgs e)

    {

    //动态查询1

    try

    {

    Hashtable hash = newHashtable();//声明哈希表

    hash.Add("LOGINNAME", TextBox2.Text); //获取查询参数用户名

    ISqlMapper mapper = Mapper.Instance(); //得到ISqlMapper实例

    IList<iBatisTest.Domain.Sysuser> plist = mapper.QueryForList<iBatisTest.Domain.Sysuser>("Test3Map.SelectSysuserDynamic1", hash);//调用QueryForList方法

    if (plist != null && plist.Count > 0)

    {

    GridView1.DataSource = plist;

    GridView1.DataBind();

    }

    Label1.Text = "动态查询1成功";

    }

    catch (Exception ex)

    {

    Label1.Text = ex.Message;

    }

    }

    }

    在iBatis.Net中,动态查询的条件元素包含以下几种:二元条件元素、一元条件元素和其他条件元素:

  • 相关阅读:
    OpenCV 笔记 (C++模板template)
    C++中预定义的运算符的操作对象只能是基本的数据类型
    linux-CentOS6.4下安装oracle11g详解
    Eclipse 连接MySql数据库总结
    六个创建模式之单例模式(Singleton Pattern)
    六个创建模式之抽象工厂模式(Abstract Factory Pattern)
    六个创建模式之工厂方法模式(Factory Method Pattern)
    六个创建模式之简单工厂模式(Simple Factory Pattern)
    搜狗实习面试
    Java设计模式 -- 基本原则
  • 原文地址:https://www.cnblogs.com/Artemisblog/p/3707119.html
Copyright © 2020-2023  润新知