介绍一些我尝试的mysqlSugar的数据库操作

修改密码

var status =  db.Update<Users>(new { password = user.password }, it => it.username == user.username);

更新数据(防止空值一起更新)

首先封装一个函数(判断是否为空或者数值为0),当然sqlsugar有自己的查询函数,判断值不为空且大于0  SqlFunc.HasNumber(object thisValue)

        public  void ForeachDisableColumns<T>(T model)
{
Type t = model.GetType();
PropertyInfo[] PropertyList = t.GetProperties();
foreach (PropertyInfo item in PropertyList)
{
string name = item.Name;
object value = item.GetValue(model);
if (value == null || value.ToString() == "")
{
db.AddDisableUpdateColumns(name);//新语法添加禁止更新列
} }
}

则结合以上函数,更新数据的用法

       ForeachDisableColumns(user);
      db.Update<Users>(user, it => it.userid == user.userid);

批量更新,同样使用上述封装的方法

            string strArr = "[{'name':'Kotonami','userid':'1'},{'name':'Akinama','userid':'17'},{'name':'Momozawa','userid':'6'}]";

            List<Users> newuser = JsonConvert.DeserializeObject<List<Users>>(strArr);
//批量更新 数据量小时建议使用大于十条用SqlBulkReplace
foreach (var item in newuser)
{
ForeachDisableColumns(item);
}
db.UpdateRange(newuser);
db.DisableUpdateColumns = null;//清空禁止更新

返回行数

            var list5 = db.SqlQuery<int>("select userid from Users limit 0,1").SingleOrDefault();

跨表查询,查询某班级学生的姓名和学号

         //方法1
outStr = db.SqlQueryJson("select name from Users,Class where class.stuid = Users.userid and class.classid = '" + newclass.classid + "'");
//方法2
outStr = db.Queryable<Class>()
.JoinTable<Users>((cl, us) => us.userid == cl.stuid)//两表共有的条件on.....
.Where<Class>(cl => cl.classid == newclass.classid)//主表的条件where.....
.Select("name,sex")
.ToJson();

三表查询 查询班级名称,该班级的学生姓名和用户id

            outStr = db.Queryable<Class>()
.JoinTable<Users>((cl, us) => cl.stuid == us.userid)
.JoinTable<MyClass>((cl, mc) => cl.classid == mc.classid)
.Where(cl => cl.classid == newclass.classid)
.Select("name,sex,className")
.ToJson();

批量插入

            string strList = "[{'classid':'2','stuid':'2'},{'classid':'2','stuid':'1'},{'classid':'2','stuid':'3'}]";
List<Class> cl = JsonConvert.DeserializeObject<List<Class>>(strList);
foreach (var item in cl)
{
try
{
db.Insert(item);
outStr = "插入成功!";
}
catch (Exception ex)
{
outStr = ex.Message;
} }

查看学习Math课程的学生的数量和名字

            //方法1 但是稍显复杂
outStr = db.Queryable<Class>()
.JoinTable<Users>((cls, us) => cls.stuid == us.userid, JoinType.Inner)
.JoinTable<MyClass>((cls, mc) => cls.classid == mc.classid && mc.classType == "Math", JoinType.Inner)
.Select("name").ToJson(); //方法2 也不简单
outStr = db.Sqlable()
.From("Class", "cl")
.Join("Users", "us", "cl.stuid", "us.userid", JoinType.Inner)
.Join("MyClass", "mc", "mc.classid", "cl.classid", JoinType.Inner)
.Where("mc.classType = 'Math'")
.SelectToJson("name"); //方法3
outStr = db.SqlQueryJson("SELECT name FROM users,class,myclass where users.userid = class.stuid and class.classid = myclass.classid and classType= 'Math'");

分页查询

            //这里我创建了一个Page类来接收页面的Index和Size
  
       var pageIndex = pages.pageIndex;
var pageSize = pages.pageSize;
var totalCount = ; var page = db.Queryable<Users>()
.OrderBy(it => it.userid)
.ToPageList(pageIndex, pageSize, ref totalCount); int totalpages = totalCount + / pageSize;//保证最后一面即使不满足pagesize也占一面
pages.totalPages = totalpages;
       //最后你可以处理成Json返回你要的数据

简单去重

            outStr = db.Queryable<Users>()
.Select("username,password").GroupBy("username,password").ToJson();
// 性能优于distinct

.Net Core+mySqlSugar的一些稍复杂操作的更多相关文章

  1. .net core下对于Excel的一些操作及使用

    原文:.net core下对于Excel的一些操作及使用 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...

  2. .net core +mysqlSugar(最为简单的增删改查)

    首先建立.net Core API - empty 这个就不说了 然后创建新的Controller 记得添加路由 [Route("api/Users")] 然后在Nuget Pac ...

  3. asp.net core 1.1 升级后,操作mysql出错的解决办法。

    遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新.插入操作没有问题. 如果你也遇到这个问题,请参照以下步骤进行升 ...

  4. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

  5. [小技巧]EF Core中如何获取上下文中操作过的实体

    原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...

  6. EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

    一.目前EF Core的版本为V2.1 相比较EF Core v1.0 目前已经增加了不少功能. EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的. 在EF Core中上下文 ...

  7. [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. net core WebApi——使用NPOI导入导出操作

    目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...

  9. .NET Core C# 中级篇2-7 文件操作

    .NET Core CSharp 中级篇2-7 本节内容为文件操作 简介 文件操作在我们C#里还是比较常见的,例如我们读取Excel.Txt文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...

随机推荐

  1. iconv字符转换

    iconv是linux下的编码转换的工具,它提供命令行的使用和函数接口支持 函数接口 iconv函数族的头文件是iconv.h,使用前需包含之.#include <iconv.h> ico ...

  2. JSP注释

    ------------------siwuxie095                                 在 JSP 文件中可以使用 HTML 注释     HTML 注释使用 < ...

  3. Centos 查看机器型号

    测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CP ...

  4. EasyOffice-.NetCore一行代码导入导出Excel,生成Word

    简介 Excel和Word操作在开发过程中经常需要使用,这类工作不涉及到核心业务,但又往往不可缺少.以往的开发方式在业务代码中直接引入NPOI.Aspose或者其他第三方库,工作繁琐,耗时多,扩展性差 ...

  5. Dapper 增删改查

    0.数据库及实体类 create table Users ( Id ,) primary key, Name nvarchar() not null, Password nvarchar() not ...

  6. Gson应用:从json格式简单字符串中获取value

    import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; i ...

  7. sed命令使用

    创建模板文件 # cat >> example.txt <<"EOF" TeSt Test test EOF 测试过程中均不使用-i参数避免模板文件内容被修 ...

  8. WebAPI学习及Swagger使用

    本文用来保存自己学习WebAPI和Swagger使用过程中参考的文章,以及对WebAPI的初步了解. 1.RESTful风格 WebAPI只支持Http协议: 1.1.WebAPI与MVC的区别 Va ...

  9. 如何看待 Kotlin 成为 Android 官方支持开发语言

    Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...

  10. mysql安装等操作

    CentOS 6.5系统中安装配置MySQL数据库 卸载掉原有mysql rpm -qa | grep mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库 rpm -e my ...