zoukankan      html  css  js  c++  java
  • Ibatis.Net 数据库操作(四)

    一、查询select

      还记得第一篇示例中的是如何读出数据库里的3条数据吗?

      就是调用了一个QueryForList方法,从方法名就知道,查询返回列表。

      1、QueryForList  返回List<T>强类型数据集合

      来看看方法原型:

    public IList<T> QueryForList<T>(string statementName, object parameterObject);
    public IList QueryForList(string statementName, object parameterObject);
    public void QueryForList<T>(string statementName, object parameterObject, IList<T> resultObject);
    public void QueryForList(string statementName, object parameterObject, IList resultObject);
    public IList<T> QueryForList<T>(string statementName, object parameterObject, int skipResults,int maxResults);
    public IList QueryForList(string statementName, object parameterObject, int skipResults, int maxResults);

      有原型可以看出,其实只是3个参数不同方法,只是分为泛型与非泛型两个版本而已。

      这个主要说说,参数skipResults,表示从结果行掉过skipResults行后返回,maxResults表示返回的行数。这个在分页中应该会用到。

      下面来看一个最简单的示例:

      xml映射文件中

      <statements>
        <select id="SelectAllPerson" resultMap="Person">  <!--id在程序中会被SqlMapper实体类所调用,resultMap就是resultMap节点的id-->
          select * from person
        </select>
      </statements>

      程序中的代码:

      IList<PersonModel> ListPerson = mapper.QueryForList<PersonModel>("SelectAllPerson", null); 

      返回就是IList<PersonModel>的集合实例了。这个不多说。

      2、QueryForObject  返回一行数据对应程序的实体类实例

      下面来看看方法原型:

    public object QueryForObject(string statementName, object parameterObject);
    public T QueryForObject<T>(string statementName, object parameterObject);
    public T QueryForObject<T>(string statementName, object parameterObject, T instanceObject);
    public object QueryForObject(string statementName, object parameterObject, object resultObject)

      不多说,下面来看看实例:

      xml映射文件:

        <select id="SelectOnePerson" resultMap="Person">
          select * from person where Id = #Id#  <!--其中#Id就是存入的参数#-->
        </select>

      程序代码:

      PersonModel p = mapper.QueryForObject<PersonModel>("SelectOnePerson", 1);   //1就是存入Sql语句的参数

      返回就是一个PersonModel对象的实例了。

      3、QueryWithRowDelegate  通过委托过滤返回的数据

      下面来看看方法原型:

        IList<T> QueryWithRowDelegate<T>(string statementName, object parameterObject, RowDelegate<T> rowDelegate);
        IList QueryWithRowDelegate(string statementName, object parameterObject, RowDelegate rowDelegate);

      4、QueryForDictionary

      5、QueryForMap

      以上两个都不懂,看以后有没有用到,再算吧。

    二、Insert

      insert插入数据的方式比较简单,就只得一个方法Insert方法:

      <insert id="InsertOne" resultMap="Person">
      insert into Person (Name)
      values(#Name#)
        <selectKey type="post" resultClass="int" property="Id">
        SELECT CAST(@@IDENTITY as int) as Id
        </selectKey>
      </insert>

      因此此处Id设为了自增,所以SQL语句里面并不需要再设置Id

      程序代码如下:

      PersonModel p = new PersonModel();
      p.Name = "曹操";
      return (int)mapper.Insert("InsertOne",p);

    三、Update

      Update方法同样简单,也只是条用一下Update方法。

      映射文件:

        <update id="UpdateOne" resultMap="Person">
          Update Person Set Name = #Name# Where Id = #Id#
        </update>

      程序代码如下:

      PersonModel p = new PersonModel();
      p.Id = 5;
      p.Name = "张三";
      return (int)mapper.Update("UpdateOne", p);

    四、Delete

      删除方法与上面一样,我都感觉自己都有点啰嗦了。

       映射文件:

        <delete id="DeleteOne" resultMap="Person">
          Delete Person Where Id = #Id#
        </delete>

      程序代码:

      PersonModel p = new PersonModel();
      p.Id = 5;
      p.Name = "张三";
      return (int)mapper.Delete("DeleteOne", p);
      //return (int)mapper.Delete("DeleteOne", 5);  //另外这样也可以
    原文地址:http://www.cnblogs.com/kissdodog/p/3295577.html
     
     
  • 相关阅读:
    ExtJS 开发总结 子曰
    解决讨厌的VS2008不能打开vs2010所创建的项目问题 子曰
    提高网站页面加载速度的黄金守则 子曰
    更新网站注意事项 子曰
    dhl:SQL_游标.sql
    jQuery 中插件的使用与开发启用Visual Studio 对jQuery的智能感知(含 jQuery1.3.2 for VS 的智能提示js文件)
    用jQuery在IFRAME里取得父窗口的某个元素的值
    图片上传预览是一种在图片上传之前对图片进行本地预览的技术。
    dhl:ajax无法跨域改用getJSON(解决服务器返回json数据中文为乱码的问题$.ajaxSetup({ scriptCharset: "utf8" , contentType: "application/json; chars)
    dhl: URL的编码问题。
  • 原文地址:https://www.cnblogs.com/caoyc/p/5810486.html
Copyright © 2011-2022 走看看