怎样不用写java代码来完毕开发?

对于大部分的产品和项目来说。页面变化是很头痛的事情。每次小功能上线,新客户到来,都须要进行定制改造,不断的开发维护。每次开发一方面要修改页面,一方面要修改server代码,然后部署。而借助动态数据源。能够不用开发后端应用,直接完毕功能开发。

新功能开发时,仅仅须要定义须要的数据格式和获取方法,如通过xml上传1个sql语句,系统依据sql语句自己主动提取数据并转成通用的格式。开发过程中,后台java开发部分仅仅是写好sql而且上传,这样前台通过某一个servlet能够动态的读取运行sql,并将结果依照json返给前端。以后全部的开发仅仅须要前端做ajax实现页面就可以。



完整业务流程例如以下:

1. 用户在前端操作,如须要读取经济类图书。

2. 前端js推断是什么操作,然后发送ajax请求到:http://services.guzz.org/commonServlet?id=f2354239sfASASFASfasf6&catId=47&keyword=jingji.....

3. server端有一个类似dispatcher-servlet的东西(我们这儿的commonServlet)。拦截请求,依据id知道载入数据须要运行名称为f2354239sfASASFASfasf6的sql文件。运行时须要參数:catId=47和keyword=jingji

4. commonServlet从文件系统中读取f2354239sfASASFASfasf6.xml文件(这个文件在一个隐藏的文件夹下。从浏览器是不能直接获取到的。集群环境会存放在集中存储上),解析sql以及对象映射ORM。

5. commonServlet打开数据库连接,依据sql构造查询语句,将第一步传入的參数所有作为命名參数传给查询语句,运行查询。

6. commonServlet把查询的ResultSet依据ORM转成java类,再转成json。返回前台。

7. 前台依据json构造出页面并展示。结束流程。

在整个过程中。有2个关键步骤,一是动态载入SQL并进行ORM映射,一是自己主动进行sql所须要參数的类型转换和匹配。进行命名查询。假设系统规模较大,还须要解决查询时分库分表的问题。对于这样的sql使用方式,因为在系统上线时,并不知道以后会用哪些sql语句,我们称作动态SQL。

实现方式:

步骤1. 实现servlet。定义一个普通的servlet,或者jsp,或者webwork/spring action,接收參数,获取到sql的id。以及全部传入的參数。然后转入处理类处理。处理完毕后,将返回结果转成json返回前端。

步骤2. 实现动态SQL载入与查询。处理类依据id载入sql并运行。返回数据库查询结果。guzz 1.2.8 beta2提供了动态SQL服务。依据此服务能够直接实现此功能。

优点:

实现以后。基本上后台开发就会非常稳定非常稳定了,大部分的工作仅仅是前端做页面。能够大幅度的减少开发成本。提高开发进度。

上面的实现是以上传文件来定义和管理sql,也能够通过数据库来管理。

这样管理起来更加简单。

假设使用guzz作为动态SQL提供者。能够自己主动获得命名查询,类型自己主动匹配(转成枚举类型都能够),分库。自己主动分切表。自己定义属性表等附加支持。

啧啧~~

改进架构,实现动态数据源,减少java维护的更多相关文章

  1. Java注解--实现动态数据源切换

    当一个项目中有多个数据源(也可以是主从库)的时候,我们可以利用注解在mapper接口上标注数据源,从而来实现多个数据源在运行时的动态切换. 实现原理 在Spring 2.0.1中引入了Abstract ...

  2. SaaS 系统架构,Spring Boot 动态数据源实现!

    这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...

  3. Java:基于AOP的动态数据源切换(附源码)

    1 动态数据源的必要性 我们知道,物理服务机的CPU.内存.存储空间.连接数等资源都是有限的,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈.而在复杂的互联网业务场景下,系统流量日益膨 ...

  4. SpringBoot整合MyBatisPlus配置动态数据源

    目录 SpringBoot整合MyBatisPlus配置动态数据源 SpringBoot整合MyBatisPlus配置动态数据源 推文:2018开源中国最受欢迎的中国软件MyBatis-Plus My ...

  5. Spring动态数据源-AbstractRoutingDataSource

    在分库分表的情况下,在执行SQL时选择连接不同的数据源(库)的思路:配置多个数据源加到动态数据源对象中,根据实际的情况动态切换到相应的数据源中. 如存放订单信息的有10个库,每个库中有100张表,根据 ...

  6. nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken

    nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...

  7. 43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  8. (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

    在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...

  9. Spring Boot:实现MyBatis动态数据源

    综合概述 在很多具体应用场景中,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动态数据 ...

随机推荐

  1. Jquery常用方法合集,超实用

    转自:十分钟玩转 jQuery.实例大全 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库. ...

  2. jquery的几种ajax方式对比

    jquery的几种ajax方式对比 jquery的ajax方式有如下几种: 1.   $.post(url,params,callback); 2.   $.getJSON(url,params,ca ...

  3. weblogica

  4. springboot创建一个可执行的jar

    让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行.可执行jars(有时候被成为胖jars "fat jars")是包含你的编译后的类和 ...

  5. 计算机底层知识拾遗(九)深入理解内存映射mmap

    内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点. 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现 ...

  6. maven:多个镜像配置

    <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>nexus-aliyun</mi ...

  7. XPATH的几个常用函数

    1.contains (): //div[contains(@id,'in')] ,表示选择id中包含有’in’的div节点2.text():由于一个节点的文本值不属于属性,比如“<a clas ...

  8. numpy和pandas简单使用

    numpy和pandas简单使用 import numpy as np import pandas as pd 一维数据分析 numpy中使用array, pandas中使用series numpy一 ...

  9. Java编程的逻辑 (25) - 异常 (下)

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  10. .NetCore 扩展封装 Expression<Func<T, bool>> 查询条件遇到的问题

    前面的文章封装了查询条件 自己去组装条件,但是对 And  Or  这种组合支持很差,但是也不是不能支持,只是要写更多的代码看起来很臃肿 根据 Where(Expression<Func< ...