sqlsugar mysql连接字符串_sqlSugar的使用---入门

2023-05-16

一,新建.net core  web项目

二.  项目引入包:sqlSugarCore

三.创建两个表:user,   department

四. 新建model(不一定需要与table相同,使用[SugarTable("tableName")]进行model与table的绑定)

namespaceSqlSugarTest01.Models

{

[SugarTable("user")]public classUserModel

{

[SugarColumn(IsPrimaryKey=true,IsIdentity =true)]//如果是主键,此处必须指定,否则会引发InSingle(id)方法异常。

public int id { get; set; }public string userName { get; set; }public string userPassword { get; set; }public int age { get; set; }public DateTime regTime { get; set; }public int departmentId { get; set; }

}

}

5.编写代码进行数据库操作,此处为了简便,我书写在HomeController中,开辟了一个方法区,在Index的return view()之前调用,以便进行调试。

(1)数据库连接以及监听

//创建连接实体对象

SqlSugarClient db = newSqlSugarClient(newConnectionConfig()

{

ConnectionString= "server=localhost;port=3307;uid=root;pwd=root;database=testsqlsugar",

DbType= DbType.MySql,//设置数据库类型

IsAutoCloseConnection = true,//自动释放数据库,如果存在事务,在事务结束之后释放。

InitKeyType = InitKeyType.Attribute//从实体特性中读取主键自增列信息

});//aop监听sql,此段会在每一个"操作语句"执行时都进入....eg:getbyWhere这里会执行两次

db.Aop.OnLogExecuting = (sql, pars) =>{string sqlStempt = sql + "参数值:" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it =>it.Value));

};

(2)单表查询

/*查询---单表*/

var list = db.Queryable().ToList();//查询所有

var getById = db.Queryable().InSingle(1);//根据主键查询(model中必须同步标识主键[SugarColumn(IsPrimaryKey =true,IsIdentity =true)])

var total = 0;var getbyWhere = db.Queryable().Where(it => it.age == 18).ToPageList(1, 2, ref total);//根据条件查询/分页.

(3)双表查询

/*查询---多表*/

var list0 = db.Queryable((user, dep) => new object[] {

JoinType.Left,user.departmentId== dep.id}).Select((user, dep) => new { Id = user.id, depId = user.departmentId, name =user.userName }).ToList();//生成的sql: SELECT `user`.`id` AS `Id` , `user`.`departmentId` AS `depId` , `user`.`userName` AS `name` FROM `user` user Left JOIN `department` dep ON( `user`.`departmentId` = `dep`.`id` )//可用预先定义好的dto类自动填充select结果集,自动填充会比较依赖字段取名规则(不指定对应关系)

List list1 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select().ToList();//可用预先定义好的dto类填充select结果集(指定对应关系)

List list2 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user, dep) =>

new userDepDto { Id = dep.id, userName = user.userName, regTime = user.regTime, name = dep.name }).ToList();

(4)多表查询分页

//多表查询分页

var list4 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user, dep) => new userDepDto { Id =user.id, userName= user.userName, regTime = user.regTime, name = dep.name }).ToPageList(2, 2);

(5)三表查询

//三表查询,返回完整的三表对象。

var list3 = db.Queryable((user, dep, userinfo) => new object[] { JoinType.Left, user.departmentId == dep.id, JoinType.Left, user.id ==userinfo.UserId }).Where((user, dep, userinfo)=> user.age == 18 || dep.id == 1 || userinfo.Sex == "男")

.OrderBy((user)=> user.id).OrderBy((user, dep) => dep.id, OrderByType.Desc).Select((user, dep, userInfo) => new { user = user, dep = dep, userInfo = userInfo }).ToList();

(6)两个Queryable的join

//两个Queryable的join

var q1 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user,dep)=>new userDepDto()

{ Id=user.id,userName=user.userName,regTime=user.regTime,name=dep.name});//在此处,sql语句还没真正执行,aop也监听不到

var q2 = db.Queryable();//inner join

var innerJoinList = db.Queryable(q1, q2, (j1, j2) => j1.Id == j2.id).Select((j1, j2) => j1).ToList();//此处sql才真正执行//left join

var leftJoinList = db.Queryable(q1, q2, JoinType.Left, (j1, j2) => j1.Id == j2.id).Select((j1,j2)=>j1).ToList();

(7)多表简化查询(当我们不需要left join和right join时,使用inner join可以简写查询语句)

//简化查询 双表查询

var list5 = db.Queryable((user, dep) => user.departmentId == dep.id).Select((user, dep) => new{ user.id, user.userName, dep.name }).ToList();//三表查询

var list6 = db.Queryable((user, dep, userinfo) => user.departmentId == dep.id && user.id == userinfo.UserId).Select((user, dep, userinfo) => new { user = user, dep = dep, userinfo =userinfo }).ToList();//3表分页查询

var list7 = db.Queryable((user, dep, userinfo) => user.departmentId == dep.id && user.id == userinfo.UserId).Select((user, dep, userinfo) => new { user.id, user.userName, user.age, dep.name, userinfo.Sex }).ToPageList(1,2);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlsugar mysql连接字符串_sqlSugar的使用---入门 的相关文章

  • mysql:谁阿米?

    有没有whoami类似mysql中的函数 我正在从远程主机连接到 mysql 命令行 我不确定我的 IP 地址是否解析为域名 我想看到类似的东西 mysql gt whoami User Host username resolved hos
  • 比较两个表并找到匹配的列

    我有两个表 table1 和 table2 我需要编写一个选择查询 它将列出两个表中存在的列 mysql 我需要为不同的桌子做 一次2个 这可能吗 我尝试使用INFORMATION SCHEMA COLUMNS但我无法做对 SELECT a
  • 保护存储过程

    我想知道是否有一种方法可以对某些用户隐藏存储过程的文本 我正在使用 MySQL 5 1 48 和 Net Connector 6 2 3 以及 Visual Studio 2008 SP1 我在 MySQL 中有两个用户 一个是 root
  • 表被指定两次作为 INSERT 的目标和单独的数据源

    我做了这个查询 但它给了我错误 就像标题中一样 INSERT INTO data waktu vaksinasi id binatang id vaksin tanggal vaksin status vaksin VALUES 1 1 S
  • sql连接一个表中的两个字段

    我有一个预订表 其中有两个人 我想将 person 1 作为一行返回 将 person 2 作为新行返回 但该人的 id 与人员表相关 这是我所得到的 但没有提取预订信息 SELECT people FROM select booking
  • 选择列表包含非聚合列

    自从更新 MySQL 以来 我注意到以下查询失败 SELECT u p name as plan COUNT u id as totalprojects FROM users u LEFT JOIN plans p ON p id acce
  • 如何在mysql中设置“performance_schema on”?

    我想转performance schemaON 在 mysql 中收集统计信息 我怎样才能实现这个目标 以下指南是特定于 Linux 的 但应该很容易适用于 Windows 您必须检查 mysql 服务器二进制文件是否已编译为支持它 mys
  • MySQL 将日期时间转换为unix时间?

    我有一个 DATETIME 格式的列 我想将其转换为数据库中的 UNIXTIME 那会是什么样的查询 我知道如何从 UNIXTIME 转换为 DATETIME 但我从未做过相反的操作 我用过FROM UNIXTIME 没有TO UNIXTI
  • 数据库设计 - “推”模型,或写时扇出

    背景信息 我正在尝试检索我关注的人的图像 按最新时间排序 它就像 Twitter 新闻源 显示您朋友的最新动态 Plans 目前我只需要考虑一项 那就是图像 将来我计划分析用户的行为并将他们可能喜欢的其他图像添加到他们的提要中等 http
  • 我应该安装哪个驱动程序才能使用 powershell 运行 mysqlcommand?

    我安装了 mysql 连接器 ODBC 5 1 8 来运行 sqlcommand 但出现此错误 Cannot find type MySql Data MySqlClient MySqlConnection make sure the as
  • 如何将UTF-8编码的汉字从MySql正确导出到SQL

    过去三天我们正在与严重的问题作斗争 我们从PhpmyAdmin导出MySql数据库文件 数据库条目中写入的数据是带有UTF 8字符集的中文 导出后将其转换为拉丁字符集 现在我们正在将此数据库SQl文件导入到其他主机 我们在UTF 8和排序规
  • mysql 将 varchar 字段排序为整数

    我的表中有一个 varchar 字段 我想对其进行排序 但我需要将此字段作为整数处理 意思是如果按文本排序 顺序是 19 2 20 但我想得到正确的顺序 2 19 20 谁能帮我 我不知何故没有设法运行查询CAST 我总是得到Error C
  • mysql错误1442的真正原因是什么?

    好吧 我在互联网上寻找了很多地方来寻找原因mysql error 1442其中说 无法更新存储函数 触发器中的表 unlucky table 因为 它已被调用此存储的语句使用 功能 触发器 有人说这是 mysql 中的一个错误或者它不提供的
  • 如何在同一列中选择多个值?

    我正在尝试在单个列中选择多个值 基本上我希望查询选择列下的所有内容family有价值观Software 1Y XI 1Y and P1 1Y 我正在运行这个查询 SELECT salesorder masterproduct family
  • MySQL Workbench 深色主题

    我刚刚开始学习 SQL 课程 并且一直在尝试不同的 GUI 我喜欢使用 MySQL Workbench 但白色背景刺瞎了我的眼睛 我已经搜索并找到了一些其他讨论编辑 xml 文件的相关帖子 我尝试用几种不同的方式对其进行编辑 但无济于事 我
  • SELECT COUNT() 与 mysql_num_rows();

    我有一个大表 60 数百万条记录 我正在使用 PHP 脚本来浏览该表 PHP 脚本 带分页 加载速度非常快 因为 表引擎是InnoDB因此SELECT COUNT 非常慢并且mysql num rows 不是一个选项 所以我将总行数 我用来
  • PHP 和 MySql 检查表是否为空

    我有点菜鸟 而且我很难过 我需要一些代码来搜索数据库表以查找与 id 变量匹配的行 我需要抓取该表 描述 中的一个字段 如果它为空 我需要显示一条消息 如果不是另一条消息 这是我的代码 我知道我需要添加 mysqli 转义字符串 只需从内存
  • 是否可以使用 LOAD DATA INFILE 类型命令来更新数据库中的行?

    伪表 primary key first name last name date of birth 1 John Smith 07 04 1982 眼下名包含多行的用户全名 期望的结果是分割数据 因此first name包含 John la
  • 将我的本地数据库(Mysql)复制到远程数据库(phpmyadmin)

    My MySQL database local server is connected to a weather station The data are updated continuously on my local server My
  • 学说 - 获取下一个和上一个记录

    这样我就已经获取了一些记录 我已创建日期字段 现在我想按日期获取下一条和上一条记录 通过以下方式让它工作 qb this gt createQueryBuilder a next qb gt expr gt gt a created dat

随机推荐