AgileRepository - 一个基于接口的Repository快速开发库
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快速开发库的更多相关文章
- 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx
LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...
- Topshelf+Quartz3.0基于控制台应用程序快速开发可调度windows服务
1.TopShelf TopShelf是一个开源的跨平台的宿主服务框架.可通过.Net Core/.Net Framwork控制台应用程序快速开发windows服务,更加便于服务调试. 本文基于.Ne ...
- 转: Orz是一个基于Ogre思想的游戏开发架构
Orz是一个基于Ogre思想的游戏开发架构,好的结构可以带来更多的功能.Orz和其他的商业以及非商业游戏开发架构不同.Orz更专著于开发者的感受,简化开发者工作.Orz可以用于集成其他Ogre3D之外 ...
- was集群下基于接口分布式架构和开发经验谈
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luozhonghua2014/article/details/34084935 某b项目是我首 ...
- 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台
项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...
- 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布
Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. 强大的代 ...
- 肝了一个半月的 Java 项目快速开发脚手架:Chewing
前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...
- 公布一个基于 Reactor 模式的 C++ 网络库
公布一个基于 Reactor 模式的 C++ 网络库 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Aug 30 本文主要介绍 muduo 网 ...
- Stateless是一个基于C#创建状态机的简单库
Stateless是一个基于C#创建状态机的简单库 .Net轻量状态机Stateless 很多业务系统开发中,不可避免的会出现状态变化,通常采用的情形可能是使用工作流去完成,但是对于简单场景下,用工作 ...
随机推荐
- Linux tar命令详解
当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令) tar常见命令参数 必要参数有如下: -A 新增压缩文件到已存在的压缩 ...
- Linode VPS主机套餐方案降低处理方法且不影响数据
使用Linode VPS主机产品经历过512MB内存升级至1GB内存,再升级至2GB内存,以及目前推出1GB内存方案月付10美元.比如我们在使用Linode 2GB内存方案的时候占用资源不是太多,其实 ...
- SpringBoot整合Redis初实践
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 有时,为了提升整个网站的性能,在开发时会将经常访问的数据进行缓存,这样在调用这个数据接口时,可以提 ...
- SQL——快速定位相关的外键表
- MySQL知识总结(二)基本语句总结
1. 数据库 查看数据库 show databases; 使用数据库 use [数据库名] 如:use mysql 创建数据库 CREATE DATABASE bruce DEFAULT CHARAC ...
- Web 通信 之 长连接、长轮询(转)
Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...
- JDK/bin目录下的不同exe文件的用途
新安装完JDk 大家是否发现安装目录的bin文件夹有很多exe文件 下面就为大家讲解不同exe文件的用途 javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件 ...
- hacknet
网盘下载地址,下载后cmd运行hacknet.exe 链接:https://pan.baidu.com/s/1gTrcuDRzDhepFlXhsOMVlg 提取码:os9v 经过5个小时的战斗,终于通 ...
- robotframwork接口测试(五)—接口分层测试粗解
个人小结,仅供参考. 接口测试很简单,但是很重要. 可以写代码,也可以用工具进行测试.工具说说就很多了,简单介绍一下我目前用过的几个能够测试接口的工具, Burpsuite:这类偏请求攻击类软件 Fi ...
- Robotframework测试相关库的简单整理
一. 官网地址 http://robotframework.org/#libraries 二.几类测试所用到的常用库初步整理 1. UI自动化测试 Selenium2Library.BuiltIn(自 ...