zoukankan      html  css  js  c++  java
  • 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中,动态查询的条件元素包含以下几种:二元条件元素、一元条件元素和其他条件元素:

  • 相关阅读:
    winform 中xml简单的创建和读取
    睡眠和唤醒 进程管理
    [山东省选2011]mindist
    关于zkw流的一些感触
    [noip2011模拟赛]区间问题
    [某ACM比赛]bruteforce
    01、Android进阶Handler原理解析
    02、Java模式UML时序图
    04、Java模式 单例模式
    14、Flutter混合开发
  • 原文地址:https://www.cnblogs.com/Artemisblog/p/3707119.html
Copyright © 2011-2022 走看看