# SummerBoot **Repository Path**: zeje/SummerBoot ## Basic Information - **Project Name**: SummerBoot - **Description**: 将SpringBoot的先进理念与C#的简洁优雅合二为一,致力于让net core开发变得更简单。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2020-06-04 - **Last Updated**: 2024-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SummerBoot > 将SpringBoot的先进理念与C#的简洁优雅合二为一,致力于让net core开发变得更简单。 ## Getting Started ### Nuget 你可以运行以下命令在你的项目中安装 SummerBoot。 ```PM> Install-Package SummerBoot``` ## 支持框架 net core 3.1 # 如何使用,可参考example项目 ## 仓储,只需写接口,实现类由框架动态生成 仓储底层基于dapper,所以支持所有dapper支持的数据库,比如sqlserver,mysql,oracle,pgsql,sqlite等 ### 在startup.cs类中注册服务 ```` services.AddSummerBoot(); services.AddSummerBootRepository(it => { it.DbConnectionType = typeof(SqliteConnection); it.ConnectionString = "Data source=./mydb.db"; }); ```` ### 定义实体,主键上添加key注解 ```` /// /// 订单详情表 /// public class OrderDetail { [Key] public int Id { set; get; } /// /// 订单表ID /// public int OrderHeaderId { set; get; } /// /// 商品编号 /// public string ProductNo { get; set; } /// /// 商品名称 /// public string ProductName { set; get; } /// /// 数量 /// public int Quantity { set; get; } /// /// 价格 /// public decimal Price { set; get; } } ```` ### 编写接口,继承IRepository接口,即可获得单表增删改查能力,包括批量操作,可自定义select,update,delete操作,支持异步同步 ```` [Repository] public interface IOrderDetailRepository : IRepository { /// /// 通过会员号获取消费详情 /// /// /// [Select("select od.* from orderHeader oh join orderDetail" + " od on oh.id=od.OrderHeaderId where oh.customerNo=@customerNo")] Task> GetOrderDetailByCustomerNoAsync(string customerNo); /// /// 分页,通过会员号获取消费详情 /// /// /// [Select("select od.* from orderHeader oh join orderDetail" + " od on oh.id=od.OrderHeaderId where oh.customerNo=@customerNo")] Task> GetOrderDetailByCustomerNoByPageAsync(IPageable pageable,string customerNo); } [Repository] public interface IOrderHeaderRepository:IRepository { /// /// 取消订单 /// /// /// [Update("update orderHeader set state=0 where customerNo=@customerNo")] Task CancelOrderByCustomerNoAsync(string customerNo); /// /// 删库跑路 /// /// [Delete("delete from orderHeader")] Task DeleteAllOrder(); } ```` ### 注入即可直接调用 ## http调用服务端feign,只需写接口,实现类由框架动态生成 ### 在startup.cs类中注册服务 ```` services.AddSummerBoot(); //添加feign请求拦截器 services.AddScoped(); services.AddSummerBootFeign(); ```` ### 编写接口,包括get,post(json方式),post(form表单形式),异常处理包括超时重试回退降级等 ```` /// /// 会员接口 /// [FeignClient(name: "CustomerService", url: "http://localhost:5001/", fallBack: typeof(CustomerFallBack))] [Polly(retry:3,timeout:2000,retryInterval:1000)] public interface ICustomerRepository { /// /// 更新会员总消费金额 /// /// /// /// [PostMapping("/Customer/UpdateCustomerAmount")] [Headers("Content-Type:application/json", "Accept:application/json", "Charset:utf-8")] Task UpdateCustomerAmount(string customerNo, decimal amount); } [FeignClient(name: "testFeign", url: "http://localhost:5001/")] [Polly(retry:3,timeout:2000,retryInterval:1000)] public interface IFeignExampleRepository { /// /// post(json方式) /// /// /// /// [PostMapping("/demo/TestJson")] [Headers("Content-Type:application/json", "Accept:application/json", "Charset:utf-8")] Task TestJson(string name,[Body]AddOrderDto dto); /// /// post(form方式) /// /// /// [PostMapping("/demo/TestForm")] Task TestForm([Form]FeignFormDto dto); /// /// get /// /// /// /// [GetMapping("/demo/GetTest")] Task TestGet(string name,int age); } ```` ### 注入即可直接调用 ## 框架中的一些接口 * IInitializing。如果一个类实现了该接口,那么在生成动态代理类,并执行属性注入后,从IOC容器中返回给调用方前,将会执行方法AfterPropertiesSet,可在该方法中执行类的初始化操作。 * IInterceptor。拦截器接口,实现该接口,可自定义拦截器,如有需要,可在注册服务的时候添加拦截器。 * ISerialization。框架中默认的序列化反序列化接口,可替换,默认为json。 * IUnitOfWork。工作单元接口,熟悉工作单元的,可重写该接口,并注入到框架中。 * ICacheManager。缓存管理器接口,可重写该接口实现各种有意思的缓存操作,比如多级缓存。 * IKeyGenerator。缓存键值生成器接口,可重写该接口,实现自定义key生成规则。 * IRedisCacheWriter。实际操作redis的接口,summerBootCache部分的底层核心,可直接属性注入使用。 * IPatternMatcher。校验字符串是否符合某规则的接口。 * IRepository。自定义仓储接口,框架默认底层实现基于dapper,可重写替换。 * IDbFactory。生成IDbConnection的工厂接口,可重写替换。