zoukankan      html  css  js  c++  java
  • 深入浅出Ibatis.net查询方式(1)

    这里我们按照ibatis.net提供的相关的方法来介绍其拥有的查询方式,后续会对其进行分类归纳总结

    在iBatis.net中有一个ISqlMapper接口,它是和外界交流的核心接口,下面是该接口下设计的属性和方法

    (可以放大查看该图片)

    可以看到里面有很多重载的方法,这些方法是实际使用中需要重点关注的,掌握和熟悉这些方法,可以帮助开发人员高效实现业务,避免再造轮子。

    • QueryForObject

      其用法及签名如下所示

    Executes a Sql SELECT statement that returns that returns data to populate a single object instance.

    The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.

    Overload List

    Executes a Sql SELECT statement that returns that returns data to populate a single object instance. The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.

    object QueryForObject(String,Object);

    Executes a Sql SELECT statement that returns a single object of the type of the resultObject parameter.

    object QueryForObject(String,Object,Object);

    Executes a Sql SELECT statement that returns that returns data to populate a single object instance. The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.

    T QueryForObject<T>(String,Object);

    Executes a Sql SELECT statement that returns a single object of the type of the resultObject parameter.

    T QueryForObject<T>(String,Object,ISqlMapper.T);

     

    QueryForQbject通俗说其作用是将数据库中的一条记录以特定的方式呈现,相当于其它框架中的GetModel(string id)等方法。建议使用generic版本。

    下面举两个例子

     

    例子1

    代码:

    SqlMap.QueryForObject<Account>("Account.SelectOne", id)

    在ibatis.net的配置文件中,由于启用了useStatementNamespaces设置为true,因此在上面的Account.SelectOne需要带上命名空间,命名空间的名字对应Account.xml中第一行namespace中的名称,此处为Account

    Account.xml映射文件片段

    <sqlMap namespace="Account" xmlns="http://ibatis.apache.org/mapping"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

     

        <alias>

            <typeAlias alias="Account" type="theone.domain.Account,theone.domain" />

        </alias>

            <select id="SelectOne" parameterClass="string" resultClass="Account">

                select * from Accounts where Id=#Id#

            </select>

    resultClass="Account"中,Account是设置的别名,简化缩写

     

    例子2

    代码

            public Hashtable FindAllOrderById5()

            {

                return SqlMap.QueryForObject<Hashtable>("Account.select-all2", null);

            }

    Account.xml映射文件

            <select id="select-all2" resultMap="FindAllResult2">

                select * from Accounts order by Id desc

            </select>

            <resultMap id="FindAllResult2" class="Hashtable">

                <result property="Id" column="Id" />

                <result property="Item" column="Item" />

                <result property="Money" column="Money" />

                <result property="Year" column="Year" />

                <result property="Month" column="Month" />

                <result property="Day" column="Day" />

                <result property="FavoritorLevel" column="FavoritorLevel" />

                <result property="CreatedOn" column="CreatedOn" />

                <result property="ModifiedOn" column="ModifiedOn" />

            </resultMap>

    这个映射配置使得到的结果的每一条记录都映射成一个Hashtable,这个Hashtable中包含9Key

  • 相关阅读:
    "Data truncated for column"错误
    PHP连接mysql数据库的代码
    JQuery使用手册
    Search does not work with Anonymous Access(匿名访问搜索无任何结果)
    完美解决MySQL中文乱码
    转:大型高性能ASP.NET系统架构设计
    团队作业8第二次项目冲刺(Beta阶段) 第一天
    团队作业5——测试与发布(Alpha版本)
    2pc和3pc区别
    在linux下使用百度ueditor编辑器上传图片
  • 原文地址:https://www.cnblogs.com/lexus/p/1643941.html
Copyright © 2011-2022 走看看