# 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
```
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
点赞很重要,必须的