• Dapper笔记-Dapper.Contrib


    简介:

    Dapper.Contrib是对Dapper的进一步封装,使对象的基本增删改查等操作进一步简化。
    如果只使用Dapper,增删改操作都需要手写sql,然后使用Execute()执行。Dapper.Contrib不需要写sql,操作对象即可

    entity配置:

    [Table("Demo")]
        public class Demo
        {
            [Key] //不是自动增长主键时使用ExplicitKey
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public int Age { get; set; }
    
            [Computed]
            public int ComputedAge => Age * 2;
    
            [Write(false)]
            public int NoWriteCol { get; set; }
    
        }
    

    上面的Demo类里面包含了Dapper.Contrib的所有实体配置选项

    • Table:指定实体对应地数据库表名,可忽略,但是忽略后实体对应地数据库表名会在末尾加个s,Demo对应Demos(感觉画蛇添足了)
    • Key:指定此列为主键(自动增长主键),可忽略,忽略后默认查找
    • ExplicitKey:指定此列为主键(不自动增长类型例如guid,ExplicitKey与Key地区别下面会详细讲)
    • Computed:计算属性,打上此标签,对象地insert,update等操作会忽略此列
    • Write:需穿一个bool值,false时insert,update等操作会忽略此列(和Computed的作用差不多,看了源码也没发现与Computed有什么不一样的地方,有了解的朋友可以赐教下哈)
      Key和ExplicitKey这两项都是指定列为主键的。区别是打上Key特性的列在插入时是不能指定值的,只能是数据库自动增长列,而ExplicitKey特性可以允许在插入时指定值,比如用guid为主键类型,则主键在插入时必须已经生成好。

    增删改查
    做好上面的配置后就可以进行实体的操作了,Dapper.Contrib与Dapper一样都是拓展了DbConnection对象,方法如下(未列出异步方法)

    T Get<T>(id);
    IEnumerable<T> GetAll<T>();
    int Insert<T>(T obj);
    int Insert<T>(Enumerable<T> list);
    bool Update<T>(T obj);
    bool Update<T>(Enumerable<T> list);
    bool Delete<T>(T obj);
    bool Delete<T>(Enumerable<T> list);
    bool DeleteAll<T>();
    

    参考:
    https://www.cnblogs.com/wuhuacong/p/9952900.html(多数据库封装案例)
    https://www.cnblogs.com/dunitian/p/5710382.html

  • 相关阅读:
    Spring(二) Spring装配Bean的几种方式
    Spring(一) Spring配置文件中classpath和classpath*的区别
    学习响应式编程 Reactor (5)
    学习响应式编程 Reactor (4)
    学习响应式编程 Reactor (3)
    学习响应式编程 Reactor (2)
    学习响应式编程 Reactor (1)
    学习Java 8 Stream Api (5)
    学习Java 8 Stream Api (4)
    Spring WebFlux 学习笔记
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13578224.html
Copyright © 2020-2023  润新知