CAE开发日志(4):SqlWithParams类

1、dao层的几类操作

对于一个应用来说,对数据库的操作的类型一共可以分为几类呢?我认为是六类:
1.getAll类
2.getCount类
3.getOne类
4.save类
5.delete类
6.update
如果再分得粗一点,就是我们经常说的CURD,增删查改了。在上面六类中,第4、5、6类对应的就是增、删、改,当然,按照实际业余需求的话还有可能出现批量增、删、改的需求,不过现在都把批量的操作也算进原来的种类里面吧。
而第1、2、3点其实就是对应查了。想必各位也知道,数据库最灵活最复杂的地方其实就是查了,数据库的一些入门书往往只会花三章的篇幅去介绍增、删、改,但是关于查询却是贯穿全书的,因为数据库的查询,本身就是一门学问。对于第1、2、3点,现在来详细地分别介绍一下它们分别代表的含义。
getAll类指的是查询出一个列表的情况,以CAE作为例子的话,“查询所有的call表”这样的请求往往就是getAll类。getAll类一般的返回值就是一个List,也就是说数据库会有多条匹配的结果。通常getAll类都会带有搜索条件,例如“查询所有歌名含有‘a’的call表,并按照歌曲发售时间排序”这样的请求其实并不少见,“歌名含有‘a’”说明要有WHERE,“按照歌曲发售时间排序”说明要有ORDER BY,这样的请求也算是getAll类。可以看出,getAll类是最复杂、最灵活的一种dao层操作了,我们等一下介绍的SqlWithParams很大程度上就是为了getAll类而服务的。
getCount类指的是查询出符合条件的结果数,以CAE作为例子的话,“查询总共有多少张call表”这样的请求就是getCount类,getCount类可以单独使用,也可以与getAll联合起来使用。其实这是一个很简单的道理,getAll往往需要分页,这时候往往就需要返回前端一个总页数totalPage(而且这个总页数是在某搜索条件下的总页数,不是简单地SELECT COUNT(*)),那么要计算这个这个总页数就需要知道总条数,总条数怎么求呢?就是把传给getAll的条件再一次传给getCount,让getCount去算出来即可。
getOne类比较简单,指的是查询出某条记录的详情信息,以CAE作为例子的话,“查看一个call表的具体信息”这样的请求就是getOne类。简单来说就是详情页,这个一般会使用getAll返回的结果的主键进行查询,所以sql较为固定,不算复杂的查询,这里就不用细说了。


2、getAll的条件解析和sql拼接

getAll类是最复杂,最需要处理的查询,为什么说它复杂呢?主要是在于它的动态性。
动态性的意思是,每次getAll产生的sql语句的结构,必须要按照前端传入的条件动态生成,所以有可能每次生成的sql
都是不同的。
举个例子,现在我们需要查询a表的所有记录,那么我们的sql会这么写:
    SELECT * FROM a;
这是一个最简单的getAll类的例子,但是假如现在条件变一下,我们增加一个condition_a,那么我们的sql会这么写:
    SELECT * FROM a 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值