• 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
     
     
  • 相关阅读:
    Win10 字体模糊解决(DPI缩放禁用),设置默认输入法英文
    windows下使用VS2015编译V8 JavaScript引擎(v5.5
    GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断
    wget 显示"英国中部时间",去掉烦人的刷屏显示
    阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
    CSS
    bootstrap4 调整元素之间距离
    数据库文件结构、sqlserver ON [PRIMARY]
    快速查看数据库中每个表的数据条数
    关于LINQ中SELECT NEW 的问题
  • 原文地址:https://www.cnblogs.com/caoyc/p/5810486.html
Copyright © 2020-2023  润新知