怎样不用写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. gitminer

    https://github.com/UnkL4b/GitMiner + Autor: UnK + Blog: https://unkl4b.github.io + Github: https://g ...

  2. Submatrix Sum

    Given an integer matrix, find a submatrix where the sum of numbers is zero. Your code should return ...

  3. springMVC初次搭建,产生错误

    七月 11, 2016 11:12:58 下午 org.apache.catalina.startup.VersionLoggerListener log 信息: Server version: Ap ...

  4. 为你详细解读HTTP请求头的具体含意

    当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...

  5. 【前端开发】关于闭包最通俗易懂的解释 for循环,定时器,闭包混合一块的那点事。

    for循环,定时器,闭包混合一块的那点事. 1,对于一个基本的for循环,顺序输出变量值. for(var i = 1; i < 4; i++){ console.log(i);//结果不多说了 ...

  6. PHP使用某个键值对二维数组排序

    $arr=[ array( 'name'=>'A', 'age'=>28 ), array( 'name'=>'B', 'age'=>14 ), array( 'name'=& ...

  7. Statement执行静态SQL语句

    package com.isoftstone.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java. ...

  8. ASP.NET OAuth、jwt、OpenID Connect

    ASP.NET OAuth.jwt.OpenID Connect 上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与J ...

  9. net mvc中angular

    把angular项目整合到.net mvc中   之前的开发选择的是完全舍弃服务端,仅保留最简单web服务器提供angular经打包的静态资源,此外所有的业务与数据请求都访问一个分离的WebApi来实 ...

  10. 开源项目TypeScript

    TypeScript 优秀开源项目大合集   TypeScript出来有段时间了,也冒出了很多用TypeScript开发的优秀开源项目,搜寻了一些基于TypeScript项目,分享给大家: https ...