zoukankan      html  css  js  c++  java
  • 基于ServiceStack.OrmLite框架 代码性能、开发效率皆第一 没有之一

    基于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 提高灵活性



     

    QQ:83199235
  • 相关阅读:
    Sort函数的用法
    hdu 1087 Super Jumping! Jumping! Jumping!(最大上升子序列和)
    hdu 1159 Common Subsequence(LCS)
    最长公共子序列
    蓝桥杯 -- 取字母
    蓝桥杯 -- 串的处理
    蓝桥杯 -- 奇怪的比赛
    蓝桥杯 -- 微生物繁殖
    hdu 1159 Common Subsequence(最长公共子序列)
    hdu 2458 Kindergarten
  • 原文地址:https://www.cnblogs.com/softcg/p/6510601.html
Copyright © 2011-2022 走看看