【个人博客搭建】(13)SqlSugar仓储实现

前边项目搭建了仓储层。但是还未使用。

这里,我们带来的就是简单的仓储实现》

1、创建Repository类:

 public class Repository<T> : SimpleClient<T> where T : class, new()
 {
     public Repository(ISqlSugarClient db)
     {
         base.Context = db;
     }

     /// <summary>
     /// 扩展方法,自带方法不能满足的时候可以添加新方法
     /// </summary>
     /// <returns></returns>
     public List<T> CommQuery(string json)
     {
         //base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做复杂操作
         return null;
     }
 }

这个也是官方给的一个案例。

可看:仓储定义 - SqlSugar 5x - .NET果糖网 

2、添加简单增删改查:


        #region 补充

        private readonly ISqlSugarClient _db;

        /// <summary>
        /// 根据IDs查询数据
        /// </summary>
        /// <param name="lstIds"></param>
        /// <returns></returns>
        public async Task<List<T>> QueryByIDs(object[] lstIds)
        {
            return await _db.Queryable<T>().In(lstIds).ToListAsync();
        }

        /// <summary>
        /// 新增实体
        /// </summary>
        /// <param name="entity"></param>
        /// <returns>返回主键ID</returns>
        public async Task<int> AddByEntity(T entity)
        {
            var insert = _db.Insertable(entity);
            return await insert.ExecuteReturnIdentityAsync();
        }

        /// <summary>
        /// 批量新增实体(速度快)
        /// </summary>
        /// <param name="listEntitys">实体集合</param>
        /// <returns>返回自增id集合</returns>
        public async Task<List<int>> AddByEntitys(List<T> listEntitys)
        {
            return await _db.Insertable(listEntitys.ToArray()).ExecuteReturnPkListAsync<int>();
        }


        /// <summary>
        /// 更新实体数据
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns>ID</returns>
        public async Task<bool> UpdateByEntity(T entity)
        {
            var i = await _db.Updateable(entity).ExecuteCommandHasChangeAsync();
            return i;
        }

        /// <summary>
        /// 批量更新实体数据
        /// </summary>
        /// <param name="entitys">实体类集合</param>
        /// <returns></returns>
        public async Task<bool> UpdateByEntitys(List<T> entitys)
        {
            return await _db.Updateable(entitys).ExecuteCommandHasChangeAsync();
        }





        /// <summary>
        /// 删除实体
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns></returns>
        public async Task<bool> DeleteByEntity(T entity)
        {
            return await _db.Deleteable(entity).ExecuteCommandHasChangeAsync();
        }

        /// <summary>
        /// 删除实体
        /// </summary>
        /// <param name="entitys">实体类集合</param>
        /// <returns></returns>
        public async Task<bool> DeleteByEntity(List<T> entitys)
        {
            return await _db.Deleteable(entitys).ExecuteCommandHasChangeAsync();
        }

        /// <summary>
        /// 删除指定ID的数据
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        public async Task<bool> DeleteById(object id)
        {
            return await _db.Deleteable<T>().In(id).ExecuteCommandHasChangeAsync();
        }

        /// <summary>
        /// 删除指定ID集合的数据(批量删除)
        /// </summary>
        /// <param name="ids">主键ID集合</param>
        /// <returns></returns>
        public async Task<bool> DeleteByIds(object[] ids)
        {
            return await _db.Deleteable<T>().In(ids).ExecuteCommandHasChangeAsync();
        }





        /// <summary>
        /// 查询实体全部数据
        /// </summary>
        /// <returns>全部数据集合</returns>
        public async Task<List<T>> QueryAll()
        {
            return await _db.Queryable<T>().ToListAsync();
        }

        /// <summary>
        /// 查询实体数据(按条件)
        /// </summary>
        /// <param name="where">条件</param>
        /// <returns>实体数据</returns>
        public async Task<List<T>> Query(string where)
        {
            return await _db.Queryable<T>().WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync();
        }

        //分页:

        #endregion

 这里的_db是我新建的一个ISqlSugarClient,在构造函数里边记得赋值哦。

其实他也等于已有的那个base.Context。

个人习惯使用db这样名称的数据访问来源对象

3、使用:

        3.1、注入服务:


builder.Services.AddScoped(typeof(Repository<>));

        3.2、注入构造函数内

private readonly Repository<Users> _usersRep;
public UsersService(Repository<Users> usersRep) 
{
    _usersRep = usersRep;
}

        3.3、案例:

public async void Test()
{
    Users user = new Users()
    {
        UserName = "张三",
        PassWord = "123456",
        PhoneNumber = "",
        Email = "",
        UserStatus = UsersEnum_UserStatus.ok,
        Gender = UsersEnum_Gender.secrecy,
        OpenId = "",
        Avatar = "",
        Admire = "",
        SubScribe = "",
        Introduction = "",
        UserType = UsersEnum_UserType.other,
        CreateBy = 0,
        CreateTime = DateTime.Now,
        UpdateBy = 0,
        UpdateTime = null,
    };

    var i1 = await _usersRep.InsertAsync(user);
    var i11 = await _usersRep.AddByEntity(user);
    var i2 = await _usersRep.QueryAll();

    user.UpdateBy = 1;
    user.UpdateTime = DateTime.Now;
    var i3 =await _usersRep.UpdateAsync(user);
    var i31 = await _usersRep.UpdateByEntity(user);

    var i4 = await _usersRep.DeleteAsync(user);
    var i41 = await _usersRep.DeleteByEntity(user);
}
    

这里简单例举了几个,可以自行研究并补充.......

4、拓展:

        4.1、上边的操作可以根据每一个类/实体去做特殊处理。(不推荐)

        4.2、.....

下一篇:

【个人博客搭建】(14)仓储模式用户注册登录案例-CSDN博客 

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一些关于使用 Flask 搭建个人博客的指导。 首先,你需要安装 Flask。你可以使用 pip 命令来安装它: ``` pip install Flask ``` 接下来,你需要创建一个 Flask 应用程序。这可以通过创建一个 Python 文件并导入 Flask 来实现: ``` from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' ``` 在这个例子中,我们创建了一个名为 `app` 的 Flask 应用程序,并定义了一个基本的路由 `/`,它返回一个简单的 "Hello, World!" 消息。 现在,你可以通过运行这个应用程序来启动你的 Flask 服务器: ``` if __name__ == '__main__': app.run() ``` 在浏览器中访问 `http://localhost:5000`,你应该可以看到 "Hello, World!" 消息。 接下来,你需要创建一个模板来呈现你的博客页面。Flask 使用 Jinja2 模板引擎,所以你需要安装 Jinja2: ``` pip install Jinja2 ``` 然后,你可以在你的 Flask 应用程序中定义一个模板: ``` from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') ``` 在这个例子中,我们定义了一个名为 `index.html` 的模板,并在路由函数中使用 `render_template` 函数呈现它。 现在,你可以创建一个名为 `templates` 的文件夹,并在其中创建一个名为 `index.html` 的文件,用于定义你的博客页面。 你可以在 `index.html` 文件中定义 HTML 和 Jinja2 模板标记,以呈现你的博客页面。例如: ``` <!DOCTYPE html> <html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my blog!</h1> <ul> {% for post in posts %} <li><a href="{{ post.url }}">{{ post.title }}</a></li> {% endfor %} </ul> </body> </html> ``` 在这个例子中,我们定义了一个标题和一个带有博客文章的无序列表。我们使用 Jinja2 的 `for` 循环标记来遍历博客文章,并使用 `if` 条件语句来检查文章是否有一个 URL 和标题。 最后,你需要编写代码来从数据库或文件中获取博客文章,并将它们传递给模板。你可以使用 Flask 的 `render_template` 函数在路由函数中呈现模板,并将数据作为参数传递给它。例如: ``` from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): posts = get_posts() # 获取博客文章 return render_template('index.html', posts=posts) ``` 在这个例子中,我们使用 `get_posts` 函数从数据库或文件中获取博客文章,并将它们作为参数传递给 `render_template` 函数。 希望这些指导可以帮助你开始使用 Flask 搭建个人博客!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值