目录
- NewLife.XCode 上手指南2018版(一)代码生成
- NewLife.XCode 上手指南2018版(二)增
- NewLife.XCode 上手指南2018版(三)查
- NewLife.XCode 上手指南2018版(四)删
- NewLife.XCode 上手指南2018版(五)改
单条件查询一个对象
-
找到我们的Biz.cs文件,XCode里我们可以把各种查询,简单的复杂的都写在Biz.cs文件
-
我们来认识一下这个文件里面的结构和作用,如下图所示,每个角标对应的意思
- partial是c#里的关键字,利用这个关键字可以把一个类拆分成多个文件,所以也就看到了我们有MyUser.cs和MyUser.Biz.cs,如果你愿意还可以自行扩展MyUser.My.cs,只要类名一致并添加partial关键字就可以了,顺便问一下个路大神,java里怎么实现这样的效果?
- 对象操作这里面可以重写Valid验证,譬如可以在这里验证各个字段的长度是否超过数据库定义的长度。 还可以重写save,delete等方法,譬如我常用的是重写save,然后在save里自动更新LastUpdateTime等常规字段。
- 扩展属性是XCode里一个非常强大的一个功能,可以实现多表的关联,2013版的指南里详细的介绍了,这次的指南的目标是入门,不想做的太复杂,可能的话再追加一篇来说说扩展属性吧。
- 扩展查询就是你写简单查询的地方啦
- 高级查询就是你写复杂查询的地方啦
- 扩展操作,实际上是扩展属性的一个延生,譬如当我们删除一个班级的时候,那么对应班级里的学生也要删除,那么这个时候就在扩展操作里写
-
业务就是你写逻辑的地方啦
- 正题,单条件查询一个对象
在biz里编写一个方法,FindOneByUserName
如此之简单? 是的就是如此之简单,这里_.Name是个什么东西,你可以查看一下XCode生成的MyUser.cs里有,实际上是可以利用智能提示快速的输入列名,输出的实际上就是一个字符串,防止输错写成Neme啦什么的。这点XCode是考虑的如此周到。
XCode里所有的查询都写成静态方法,通过类名就可以访问到查询的方法,也是省去了new一个对象的麻烦,而且业务流程中一个对象就是一个对象,不要同时是一个对象又具有查询功能,这样非常不清晰。
多条件查询一个对象
如果有多个条件应该怎么写呢?譬如我想找名字是aaa,并且是20岁的,那么我们来演示一下多条件查询一个对象的例子
单条件查询多个带排序
有的时候我们要找多个,有的时候找到一个list的时候我还想要根据年龄排序,那么我们来演示一个单条件名字包含a的所有User,并且根据他们的年龄倒序排序
此处的_.Name.Contains,实际上是XCode内部提供的一个方法,可以相当于一个Strting.Format("Name like '%{0}%'",pName) 的功能
XCode内部实现了非常高效的分页查询,所以利用FindAll可以很方便的实现分页。那么分页还有一个查询总项数的,这里顺带提一下,是FindCount方法,参数和FindAll一模一样。
多条件查询多个带排序
多个条件查询还要排序的,举个栗子,找名字包含a并且年龄小于20的所有User,并且分页显示,一页显示10条。
这里就不用多解释了,和上面的FindAll实际上是一样的,多了一个FindCount是为了给分页控件提供一共有多少项,用于算需要多少页的。
自定义SQL查询
基本上上面的查询已经可以满足所有需求了,如果还有不满足的,那么就直接执行sql吧,下面演示一种直接查询sql还能自动输出对象list的方法
总结
本节我们利用XCode进行了查询,从最简单的单条件查询一条到最复杂的自定义sql都涵盖了,XCode实际上在缓存这里还做了很多非常实用的功能,这里就不深入展开了。下一节我们试着去修改一下数据。