# GoSqlGo **Repository Path**: antonetwo/gosqlgo ## Basic Information - **Project Name**: GoSqlGo - **Description**: 天下武功,唯快不破,程序无非就是接收用户输入、存到数据库。GoSqlGo能让前端直接存取数据库,省掉后端程序员。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 23 - **Created**: 2018-12-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoSqlGo #### 简介 | Description 天下武功,唯快不破,程序无非就是接收用户输入、存到数据库。GoSqlGo能让前端直接存取数据库,省掉后端程序员。 #### 缘起 | Origin 一直认为,开发效率最高的方式不是让MVC架构极简(SpringBoot/jFinal),而是彻底省略掉MVC架构和后端程序员,直接由前端搞定一切,由多层架构变成两层,在前端直接写SQL,缩短输入和SQL的矩离,才是最快的开发途径。基于此理念,在2011年本人在[这里](https://blog.csdn.net/drinkjava/article/details/6935539)写了一句预言,没想到技术的发展如此之慢,现在要自己亲手去实现它了,这就是GoSqlGo项目,如果名字翻译成中文,可以翻译成"Sql冲冲冲冲冲",这个比较贴切,它体现了SQL为王,一路狂奔,冲到了前端的意思。 #### 架构 | Software Architecture GoSqlGo是一个运行于后端的集ORM、Servlet、MVC功能为一身的开发环境,它的最大特点就是动态编译客户端Java代码,所有SQL和Java代码都可以在前端Html页面完成,可以彻底甩掉后端了。 忘掉MVC吧,因为现在架构变成两层了;忘掉事务、ORM吧,前端只需要关注SQL就行了;忘掉FreeMaker之类模板吧,因为Java变成了Javascript中的模板语言。忘掉后端程序员吧,因为后端除了写数据库,本来就没多少事干,现在这点活也由前端接管了。 #### 特点 | Features 前端程序员可以直接在Javascript里写SQL和Java代码,例如以下为一个HTML片段,实测通过,示例位于[这里](https://gitee.com/drinkjava2/gosqlgo/blob/master/demo/gsg-tomcat/src/main/webapp/page/home.html): ``` ......

Transaction Demo

Account A
Account B
``` GoSqlGo运行在服务端,只需要进行简单的数据源设定就可以了,详见demo/gsg-tomcat/src/main/java/com/gitee/gosqlgo/demo/InitConfig.java文件内容。 GoSqlGo在客户端只需要添加一个gosqlgo.js,就可以进行服务端调用了,所有业务写在客户端。gosqlgo.js主要有三个方法: * qry() 执行单个SQL查询,返回一个文本对象。 * java() 执行多行Java语句,返回一个文本或JSON对象。 * tx() 执行多行Java语句并开启事务,返回一个文本或JSON对象,执行过程中如果出错,则事务会自动回滚。 #### 原理 | Description 开发阶段:GoSqlGo在服务端运行,它自带一个动态编译工具,前端发来的SQL和Java片段,被运态编译为Java类,并调用其自带的ORM工具(采用jSqlBox),运行并返回文本或JSON对象。 布署阶段:通过一个打包工具,将前端所有的SQL和原生Java片段打包到服务端去,原有客户端的SQl和JAVA代码在打包后将成为类似于qry('Cdjf0198fgopiadr9h9h','A');之类的通过ID进行的调用,以实现安全性。 #### 安装 | Installation 目前只支持Tomcat7及Java8版本或以上,用git clone下载后,修改"deploy_tomcat.bat"批处理命令中的Tomcat7路径,指向本机的Tomcat安装目录,然后双击这个批处理就可以运行了。 查看: http://127.0.0.1/ 注意:目前GoSqlGo并未开发完成,打包工具也没有,且需要本机安装Tomcat7或以上,待正式发布时,将针对Tomcat/SpringBoot/Jetty/Undertow分别发行不同的Sevlet集成版本, 本机不再需要安装Tomcat。 ## 作者其它开源项目 | Other Projects - [ORM数据库工具 jSqlBox](https://gitee.com/drinkjava2/jsqlbox) - [数据库方言工具 jDialects](https://gitee.com/drinkjava2/jdialects) - [一个独立的声明式事务工具 jTransactions](https://gitee.com/drinkjava2/jTransactions) - [一个微型IOC/AOP工具 jBeanBox](https://gitee.com/drinkjava2/jBeanBox) - [一个服务端布局工具 jWebBox](https://gitee.com/drinkjava2/jWebBox) ## 期望 | Futures 目前GoSqlGo还未完全开发完成,对它感兴趣的请加关注,或发issue提出更好的意见,帮助完善它。也欢迎加入GoSqlGo开发组。 ## 版权 | License [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0) ## 关注我 | About Me [Github](https://github.com/drinkjava2) [码云](https://gitee.com/drinkjava2) ## 点赞 | DianZan 点赞很重要,必须的