AgileRepository

这是一个可以帮助你快速开发Repository的lib。有点像SpringData JPA根据方法名、注解来自动生成查询方法的功能。

对于一些简单的查询,只需要定义接口就行了,实现都不用。

Github: AgileRepository

依赖

AspectCore >= 0.2.4

Dapper >= 1.50.4

DapperExtensions >= 1.6.3

System.Threading.Tasks.Extensions >= 4.3.0

使用

public interface IUserRepository:IAgileRepository<Users>
{
[QueryByMethodName]
IEnumerable<Users> QueryByUserName(string userName); }
var repository = AgileRepository.Proxy.SingletonInstance<IUserRepository>();
repository.QueryByUserName("admin");

配置

    AgileRepository.SetConfig(new AgileRepositoryConfig()
{
SqlMonitor = (sql, paramters ) =>
{
Console.WriteLine(sql);
},
ConnectionName = "conn"
});

示例

根据sql查询

    [QueryBySql("SELECT * FROM USERS")]
IEnumerable<User> TestSql(); [QueryBySql("SELECT * FROM USERS where username=@userName")]
IEnumerable<User> TestSql1(string userName);

根据方法名称查询

    [QueryByMethodName]
IEnumerable<User> QueryByUserName(string userName); [QueryByMethodName]
IEnumerable<User> QueryByUserNameAndId(string userName, string id); [QueryByMethodName]
IEnumerable<User> QueryByCreaterIsNull(); [QueryByMethodName]
IEnumerable<User> QueryByCreaterIsNotNull();

查询所有

    [QueryAll]
IEnumerable<User> QueryAll();

根据 sql Count

    [CountBySql("Select count(*) from users")]
int TestCount(); [CountBySql("Select count(*) from users where userName=@userName")]
int TestCount1(string userName);

根据方法名Count

    [CountByMethodName]
int CountByUserName(string userName); [CountByMethodName]
int CountByIdAndUserName(string id, string userName);

Count所有

    [CountAll]
int CountAll();

Insert

    [Insert]
int Insert(User user);
[Insert]
int Insert(IEnumerable<User> users);

Update

    [Update]
int Update(User user); [Update]
int Update(IEnumerable<User> users);
    [Delete]
int Delete(User user); [Delete]
int Delete(IEnumerable<User> users); [DeleteByMethodName]
int DeleteByUserName(string userName);

执行非查询sql

    [ExecuteBySql("Delete from [users] where id =@id ")]
int Execute(string id);

支持的where关键字

Key Name Where
And QueryByUserNameAndId where UserName=@UserName And Id=@Id
Or QueryByUserNameOrId where UserName=@UserName Or Id=@Id
IsNull QueryByUserNameIsNull where UserName Is Null
IsNotNull QueryByUserNameIsNotNull where UserName Is Not Null
GreaterThen QueryByAgeGreaterThen where Age>@Age
GreaterEqual QueryByAgeGreaterEqual where Age>=@Age
LessThen QueryByAgeLessThen where Age<@Age
LessEqual QueryByAgeLessEqual where Age<=@Age
Not QueryByAgeNot where Age!=@Age
In QueryByUserNameIn where UserName in @UserName
NotIn QueryByUserNameNotIn where UserName Not in @UserName
Like QueryByUserNameLike where UserName Like @UserName
NotLike QueryByUserNameNotLike where UserName Not Like @UserName

AgileRepository - 一个基于接口的Repository快速开发库的更多相关文章

  1. 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx

    LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...

  2. Topshelf+Quartz3.0基于控制台应用程序快速开发可调度windows服务

    1.TopShelf TopShelf是一个开源的跨平台的宿主服务框架.可通过.Net Core/.Net Framwork控制台应用程序快速开发windows服务,更加便于服务调试. 本文基于.Ne ...

  3. 转: Orz是一个基于Ogre思想的游戏开发架构

    Orz是一个基于Ogre思想的游戏开发架构,好的结构可以带来更多的功能.Orz和其他的商业以及非商业游戏开发架构不同.Orz更专著于开发者的感受,简化开发者工作.Orz可以用于集成其他Ogre3D之外 ...

  4. was集群下基于接口分布式架构和开发经验谈

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luozhonghua2014/article/details/34084935    某b项目是我首 ...

  5. 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...

  6. 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布

    Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. 强大的代 ...

  7. 肝了一个半月的 Java 项目快速开发脚手架:Chewing

    前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...

  8. 公布一个基于 Reactor 模式的 C++ 网络库

    公布一个基于 Reactor 模式的 C++ 网络库 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Aug 30 本文主要介绍 muduo 网 ...

  9. Stateless是一个基于C#创建状态机的简单库

    Stateless是一个基于C#创建状态机的简单库 .Net轻量状态机Stateless 很多业务系统开发中,不可避免的会出现状态变化,通常采用的情形可能是使用工作流去完成,但是对于简单场景下,用工作 ...

随机推荐

  1. Windows10自动更新之后,无线有线都连不上网

    大概浪费了我至少6个小时. 一个是无线网卡,这个后来可以修复,其实也不是网卡的原因.最主要的原因是 Realtek PCIe GBE Family Controller  这个驱动.只找到一个win1 ...

  2. React-Router JS控制路由跳转

    React-Router JS控制路由跳转 时间: 2016-04-12 15:01:20 作者: zhongxia React-Router 控制路由跳转的方式,目前知道的有两种[Link 链接, ...

  3. Service Mesh服务网格新生代——Istio

    Istio 是什么?使用云平台可以为组织提供丰富的好处.然而,不可否认的是,采用云可能会给 DevOps 团队带来压力.开发人员必须使用微服务已满足应用的可移植性,同时运营商管理了极其庞大的混合和多云 ...

  4. rimraf命令 递归删除目录所有文件

    使用webpack build文件项目时每次都会生成一个dist目录,有时需要把dist目录里的所以旧文件全部删掉, 除了可以使用rm -rf /dist/命令删除外,还可以使用rimraf /dis ...

  5. BZOJ4259:残缺的字符串(FFT)

    Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同 ...

  6. Odoo的@api.装饰器

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281437.html Odoo自带的api装饰器主要有:model,multi,one,constrains, ...

  7. mysql报错:/usr/sbin/mysqld:unknown variable 'default-character-set=utf8'

    修改mysql的字符集时,为了将默认字符集设置为utf-8,便将/etc/my.cnf下[mysqld]加了一行 default-character-set=utf8, 但是在下次启动系统的时候,my ...

  8. MySQL无法存储Emoji表情问题

    数据插入的时候报错: 1366 - Incorrect string value: '\xF0\x9F\x98\x81' for column 'job' at row 23 解决办法: 1.修改配置 ...

  9. Spring事务(一)JDBC方式下的事务使用示例

    摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 目录 一.创建数据表结构 二.创建对应数据表的PO 三.创建表与实体间 ...

  10. ZooKeeper(一)基本介绍

    本文转载自LDB's Blog,原文链接 ZooKeeper原理及其在Hadoop和HBase中的应用 目录 一.简介 二.基本概念 1. 集群角色 2. 会话(Session) 3. 数据节点(ZN ...