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 | 
       
QQ群:1022985150 VX:kklldog 一起探讨学习.NET技术
作者:Agile.Zhou(kklldog)            
 
出处:http://www.cnblogs.com/kklldog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号