基于ServiceStack.OrmLite框架 代码性能、开发效率皆第一 没有之一
1.此框架方便简洁,便于学习研究。除了基本的增删改查外,还有分页,兼容分页的多表查询,同一业务处理时多次数据库操作仅需要打开一次数据库,反射对象映射赋值,分页返回集合的json封装函数,自定义对象,NLOG日志记录,前端H+框架,sweetalert、Sortable、layer、swal等各种效果插件.....
2.本文主要介绍:
框架基本结构;
兼容分页的多表查询(仅打开一次数据库,标准的分页+多表sql语句)。
3.其余的自己研究学习扩展或者自行搭建框架时可参考。
结构图如下:
第二张
=====================
下面开始简单举例说明多表查询分页在此项目的应用:
查询以ajax形式:
流程为: ajax请求,查询参数为表单序列化,请求获取返回结果集合json,调用通用js函数进行html拼接,利用laypage生成分页代码。
效果图为:
下图为界面的html和js:name值和返回的json对象key一致,这样就可以智能填充数据value,其中角色是多表查询出来的,下面介绍后台代码的时候会说到。
上面图为ajax加载分页数据,函数参数_pageIndex为当前页,初始加载传入1即可,其中fillTableData函数为填充table数据,
此函数可以通用,根据上面html 的table中th 的name值来自动匹配json中的key取value填充数据。
好了来看请求的控制器代码
没错就两行,此处仅有两行代码,有木有! (好了 大招在logic业务逻辑层里面)。
这个函数主要是处理查询条件的,由于每个业务模块的查询字段和条件不一,所以还得手写,只不过这里是动态拼接表达式 而非sql语句。之所以可以这样干是因为需要一些引用:看下图
那么真正的获取数据集合及多表查询(角色名称)在下面这个函数GetPageList,注意看下面代码的注释
注意有个自定义对象 PagerSYSUser,下面给出定义
生成的数据库访问sql语句(多表+分页)(本例使用的oracle)
。。。。。基本完工=======================================
值得注意的小地方有:
此处两种写法,如果使用第一种写法的话,省去多表关联,那么就得在对象里的属性指定: 如下图
其中返回集合对象json序列化方法:
在这里
======实用: 多表指定字段查询:==================
这里可以指定多表的查询中 指定每个表的指定字段查询,返回结果的对象属性和其属性一致即可自动赋值。
生成的sql如: 只查询了W_SYSUSER表的ADDRESS和W_ROLE表的RNAME两个字段。
补充:多表查询字段时候,如果两个表有同名字段,那么返回对象的属性命名写法为{表名}{字段名}如下例:
注意表名首字母大写,后面一定小写,然后字段名的首字母一定大写,后面小写!
那么生成的sql语句为: N_COACH.NAME as N_coachName ,N_STUDENT.NAME as N_studentName,
框架源码 :
(之前网盘链接失效,源码找作者)
servicestack.ormlite
https://github.com/ServiceStack/ServiceStack.OrmLite ;
=============2016-9-21 更新 在servicestack内使用dapper 支持sql 提高灵活性