您的位置:首页 > 编程语言

基于ServiceStack.OrmLite框架 代码性能、开发效率皆第一 没有之一

2016-12-09 11:51 302 查看
基于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, 



 

 

框架源码 :

 http://pan.baidu.com/s/1cuVVSM

servicestack.ormlite
https://github.com/ServiceStack/ServiceStack.OrmLite ;



 

 

=============2016-9-21 更新 在servicestack内使用dapper 支持sql 提高灵活性



 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ServiceStack.OrmLite
相关文章推荐