首先建立.net Core API - empty 这个就不说了
然后创建新的Controller
记得添加路由
[Route("api/Users")]
然后在Nuget Packages安装 所需安装包
这里是用mysql所以下载如下的mysqlSugarCore
(切记不要忘记安装Mysql.Data)
创建实例化class文件DbContext.cs
用于连接数据库,初始化
private DbContext() { } public static string ConnectionString { get; set; } public static SqlSugarClient GetInstance() { var db = new SqlSugarClient(ConnectionString); return db; }
当然记得引用MySqlSugar的库
然后在appsetting.json中创建连接字符串
点击Startup.cs在ConfigureServices函数中:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); DbContext.ConnectionString = Configuration.GetConnectionString("DefaultConnection"); }
然后创建model层这里我根据数据库中的字段来创建
Ok接下来前期的工作完成了 ,利用sqlSugar进行基本的增删改查操作
Select
创建select接口
[HttpPost("select")] public string Select(Users user) { using (var db = DbContext.GetInstance()) { //查询所有数据的前五条并转化为Json格式 var top5 = db.Queryable<Users>().OrderBy(it => it.username).ToJson(); //简单的条件查询,查询表中所有女生的名字 var girl = db.Queryable<Users>().Where(it =>it.sex ==0).Select("name").ToJson(); return girl; } }
点击运行后 用postman进行调试可以看到从数据库中取出的前5条数据以JSon的格式返回或者表中女生的名字
Insert
接下来尝试用sqlsugar实现增加的操作
[HttpPost("add")] public string Register(Users user) { //这里直接不加判断就增加一条学生数据 using (var db = DbContext.GetInstance()) { var status = db.Insert(user); //查询刚插入的sex是否有值 var sex = db.Queryable<Users>().Single(it => it.userid == status.ObjToInt()).sex; return "status:"+status.ToString() + ",sex:" + sex; } }
结果
发现数据库汇总的确多了一条数据插入成功
顺便来研究一下这个db.Insert()的返回值到底是什么东西
我换了一组值进行再次post
可以发现status从7 变成了8 我观察数据库发现这就是我的主键自增字段id的值(话说为什么就不是bool值呢)
Delete
然后来进行删除操作
[HttpPost("delete")] public bool RemoveUser(Users user) { using (var db = DbContext.GetInstance()) { //删除根据主键 // db.Delete<Users, int>(10); //主键批量删除 //db.Delete<Users, string>(new string[] { "100", "101", "102" }); //假删除 //db.FalseDelete<school>("is_del", 100); //等同于 update school set is_del=1 where id in(100) //db.FalseDelete<school>("is_del", it=>it.id==100); //同时满足条件删除 bool status = db.Delete(new Users() { username = "issa2018",password = "123457"}); return status; } }
运行postman后发现返回false 我去 难道不是我想的这样??
然后我改变代码
bool status = db.Delete(new Users() { userid = 8});
这样就返回为true了 所以这个方法只能用于主键为参数!!!
最无语的就是我将代码改成如下(密码是错误的)以为他要同时满足条件才能删除
bool status = db.Delete(new Users() { userid =7,password = "123445"});
但返回结果却是true(也就是仍然删除了userid为7的列)
最后发现满足多条件删除得这么来,感觉稍微有点麻烦啊
bool status = db.Delete<Users>("username=@username and password=@password", new { username = user.username,password = user.password});
那我还不如这样
bool status = db.Delete<Users>("username='"+user.username+"' and password='"+user.password+"'");
Update
先看下如何用sqlsuagr怎么修改吧
[HttpPost("update")] public bool EditInfo(Users user) { using (var db = DbContext.GetInstance()) { //支持字典更新,适合动态权限 //var dic = new Dictionary<string, string>(); //dic.Add("name", "第十三条"); //dic.Add("areaId", "1"); //db.Update<Users, int>(dic, 13); //这个更新会把除了更新的东西以外的全部值都为空赋进去因为是吧整个user带进去了 //var updateStatus = db.Update<Users>(new Users { name = user.name, remark = user.remark }, it => it.username == user.username & it.password == user.password); //更新name和remark的值 var updateStatus = db.Update<Users>(new { name = user.name, remark = user.remark }, it => it.username == user.username & it.password == user.password); return updateStatus; } }
Postman传递数据更新成功
下一次会整理更多有用的sqlsugar的功能