学习不走弯路,通过《mall视频教程(最新版)》,使用更系统、高效的方式来学习mall电商实战项目吧!
狂揽17k star!腾讯零代码后端开发神器来了,真香啊!
狂揽17k star!腾讯零代码后端开发神器来了,真香啊!
作为Java后端开发,我们在开发接口时经常需要编写Controller、Service、Dao一堆代码,那有没有什么工具可以直接根据数据库生成接口,无需这些代码呢?今天给大家分享一款腾讯开源的后端开发神器
APIJSON,可以零代码实现后端接口,希望对你有所帮助!
APIJSON简介
APIJSON是腾讯开源的实时零代码、全功能、强安全ORM库,为各种增删改查提供了完全自动化的万能通用接口,使用它能简化开发流程,缩短开发周期,目前在Github上已有17k+star。
APIJSON主要具有如下特性:
- 提供了万能通用的后端接口,只需创建好数据库表,即可自动实现对应接口。
- 能零代码实现增删改查、各种跨库连表、JOIN嵌套子查询等都能支持。
- 能自动生成文档,无需花费多余精力去维护。
- 能自动校验权限、管理版本、防SQL注入。
- 能定制返回JSON的数据和结构。
下面是使用APIJSON开发后端接口的效果图:

准备
在使用APIJSON之前,我们需要先下载它的示例项目
APIJSON-Demo,这里以基于Spring Boot的后端项目为例。
- 首先下载
APIJSON-Demo项目的源码,下载地址:https://github.com/APIJSON/APIJSON-Demo

- 下载完成后进行解压,然后将
APIJSONDemo这个模块导入到IDEA中;

- 然后在MySQL数据库中创建一个数据库
apijson_sys,用于存放APIJSON所需的数据库表,该表在项目的MySQL/single目录下;

- 导入成功后,数据库中将包含如下表;

- 接下来需要修改
DemoSQLConfig类中的数据库连接配置,包括DEFAULT_SCHEMA、DBVersion、DBUri、DBAccount、DBPassword,修改完成后运行启动类DemoApplication启动项目。
public class DemoSQLConfig extends APIJSONSQLConfig<Long, JSONObject, JSONArray> {
static {
DEFAULT_DATABASE = DATABASE_MYSQL; // TODO 默认数据库类型,改成你自己的
DEFAULT_SCHEMA = "apijson_sys"; // TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle:
//表名映射,隐藏真实表名,对安全要求很高的表可以这么做
TABLE_KEY_MAP.put("User", "apijson_user");
TABLE_KEY_MAP.put("Privacy", "apijson_privacy");
}
@Override
public String gainDBVersion() {
return "5.7.19"; // "8.0.11"; // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 // MYSQL 8 和 7 使用的 JDBC 配置不一样
}
@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息
@Override
public String gainDBUri() {
return "jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000
}
@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息
@Override
public String gainDBAccount() {
return "root"; // TODO 改成你自己的
}
@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息
@Override
public String gainDBPassword() {
return "root"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 ""
}
}使用
APIJSON运行准备做完之后,我们就使用它来开发后端接口了,这里以mall电商实战项目中的商品品牌管理功能为例。
这里先简单介绍下mall项目,mall项目是一套基于 SpringBoot3 + Vue 的电商系统(Github标星60K),后端支持多模块和 2024最新微服务架构 ,采用Docker和K8S部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能!
- Boot项目:https://github.com/macrozheng/mall
- Cloud项目:https://github.com/macrozheng/mall-swarm
- 教程网站:https://www.macrozheng.com
- 首先我们创建一个业务数据库
mall_api,和APIJSON的系统数据库apijson_sys区分开来,然后添加商品品牌表pms_brand,表结构如下;
CREATE TABLE `pms_brand` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
`first_letter` varchar(8) DEFAULT NULL COMMENT '首字母',
`sort` int(11) DEFAULT NULL,
`factory_status` int(1) DEFAULT NULL COMMENT '是否为品牌制造商:0->不是;1->是',
`show_status` int(1) DEFAULT NULL,
`product_count` int(11) DEFAULT NULL COMMENT '产品数量',
`product_comment_count` int(11) DEFAULT NULL COMMENT '产品评论数量',
`logo` varchar(255) DEFAULT NULL COMMENT '品牌logo',
`big_pic` varchar(255) DEFAULT NULL COMMENT '专区大图',
`brand_story` text COMMENT '品牌故事',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1747297739014 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='品牌表';- 然后在
access表中添加一条记录用于注册pms_brand表,还给它取了个别名PmsBrand;
INSERT INTO `apijson_sys`.`access` (`id`, `debug`, `schema`, `name`, `alias`, `get`, `head`, `gets`, `heads`, `post`, `put`, `delete`, `date`, `detail`) VALUES (NULL, 0, 'mall_api', 'pms_brand', 'PmsBrand', '[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"OWNER\", \"ADMIN\"]', '2018-11-29 00:29:19', NULL);- 接下来我们就会拥有
PmsBrand表的万能通用接口了,首先我们来实现根据ID查询商品品牌的接口,请求参数如下;
{
"PmsBrand": {
"id": 6
}
}- 请求接口后返回结果如下;

- 再来实现一个
新增商品品牌的接口,请求参数如下;
{
"PmsBrand": {
"name": "新增品牌",
"first_letter": "M",
"sort": 500,
"factory_status": 1,
"show_status": 1,
"product_count": 100,
"product_comment_count": 100,
"logo": "http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/images/20180518/5a912944N474afb7a.png",
"big_pic": "http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/images/20180518/5afd7778Nf7800b75.jpg",
"brand_story": "新增品牌的故事"
}
}- 请求接口后返回结果如下;

- 再来实现一个
修改商品品牌的接口,请求参数如下;
{
"PmsBrand": {
"id": "1747300320185",
"name": "修改品牌",
"brand_story": "修改新增品牌的故事"
}
}- 请求接口后返回结果如下;

- 再来实现一个
删除商品品牌的接口,请求参数如下;
{
"PmsBrand": {
"id": 1747300320185
}
}- 请求接口后返回结果如下;

- 最后再实现一个
分页查询商品品牌并按sort字段降序排列的接口,请求参数如下;
{
"[]": {
"PmsBrand": {
"@column": "id,name,first_letter,brand_story,sort",
"@order": "sort-"
},
"page": 0,
"count": 5
}
}- 请求接口后返回结果如下。

总结
今天带大家体验了一把APIJSON的使用,只要你创建好数据库表,APIJSON真的可以自动生成后端API接口,当然APIJSON的功能不止于此,感兴趣的小伙伴可以尝试下它!
项目地址
https://github.com/Tencent/APIJSON
公众号
