当前位置: 首页 > news >正文

apijson 快速上手

apijson是强大的工具,简化了CRUD的操作,只要有数据库表,就能自动生成RESTFUL接口。但初次上手也是摸索了很长时间,尤其是部署与使用上,这里尝试以初学者角度来说下:

一、好处

1、对于简单的应用,只需要建表,自动生成RESTFUL的CRUD接口,时间节省明显;
2、支持跨表、筛选等复杂的数据库查询;
3、大厂出口,品质优秀
详细的就不介绍了,可上官网查看:apijson.cn

二、快速上手

直接使用官方APIJSON-Demo。

  1. 必要条件

安装好Java和Maven (Maven设置为阿里源,这样下载包更快)。

  1. 下载示例
git clone https://github.com/APIJSON/APIJSON-Demo.git

或者

git clone https://gitee.com/APIJSON/APIJSON-Demo.git

示例中有很多项目,满足不同的使用场景。

  1. 数据库准备(Mysql为例)

进入下载好的目录,找到sys.sql文件,路径在:APIJSON-Demo/MySQL/sys.sql

使用数据库管理工具,导入sql文件并执行,会把apijson运行所需要的数据库文件建表,并提供案例。

运行后,生成如下的数据表:

在这里插入图片描述

  1. 修改java配置文件

这里使用APIJSONDemo项目 (路径在:APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo ),APIJSONDemo 使用了apijson-framework,自动化更强。

配置文件主要用于设定数据库连接的参数,主机、数据库和密码。

  1. 默认是sys数据库,可以自定义,这样现有的数据库不用改动。
  2. !!! 要自动化更高(部署好后就不用修改后端代码),自己的数据表名必须是大写字母开头,列名不要是中文,不然可以返回状态码200,但取不到需要的数据。
  • 找到DEFAULT_SCHEMA ,变成自己的数据库
  • 找到 public String getDBUri() ,修改数据库主机和端口号
  • 找到 public String getDBAccount() ,修改数据库登录账号
  • 找到 public String getDBPassword() ,修改数据库登录密码

如果自己的数据表是小写,或者中文,需要在代码里单独设置一下别名 ,使用:TABLE_KEY_MAP.put()
如示例sys数据库下的表是 apijson_user,映射为大写开关的名称:
TABLE_KEY_MAP.put("User", "apijson_user");

/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/

package apijson.demo;

import com.alibaba.fastjson.annotation.JSONField;

import apijson.framework.APIJSONSQLConfig;


/**SQL 配置
 * TiDB 用法和 MySQL 一致
 * 具体见详细的说明文档 C.开发说明 C-1-1.修改数据库链接  
 * https://github.com/Tencent/APIJSON/blob/master/%E8%AF%A6%E7%BB%86%E7%9A%84%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md#c-1-1%E4%BF%AE%E6%94%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E9%93%BE%E6%8E%A5
 * @author Lemon
 */
public class DemoSQLConfig extends APIJSONSQLConfig {

	static {
		DEFAULT_DATABASE = DATABASE_MYSQL;  // TODO 默认数据库类型,改成你自己的
		DEFAULT_SCHEMA = "mydb";  // TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle: 

        // 表名和数据库不一致的,需要配置映射关系。只使用 APIJSONORM 时才需要;
        // 如果用了 apijson-framework 且调用了 APIJSONApplication.init 则不需要
        // (间接调用 DemoVerifier.init 方法读取数据库 Access 表来替代手动输入配置)。
        // 但如果 Access 这张表的对外表名与数据库实际表名不一致,仍然需要这里注册。例如
        //		TABLE_KEY_MAP.put(Access.class.getSimpleName(), "access");

		//表名映射,隐藏真实表名,对安全要求很高的表可以这么做
		TABLE_KEY_MAP.put("User", "apijson_user");
		TABLE_KEY_MAP.put("Privacy", "apijson_privacy");
	}

	@Override
	public String getDBVersion() {
		return "5.7.22";  // "8.0.11";  // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号  // MYSQL 8 和 7 使用的 JDBC 配置不一样
	}
	
	@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
	@Override
	public String getDBUri() {
		return "jdbc:mysql://localhost:3307?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000
	}
	
	@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
	@Override
	public String getDBAccount() {
		return "myacount";  // TODO 改成你自己的
	}
	
	@JSONField(serialize = false)  // 不在日志打印 账号/密码 等敏感信息
	@Override
	public String getDBPassword() {
		return "mypassword";  // TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 ""
	}

}

  1. 打包并运行
    命令行中回到项目目录APIJSONDemo ,如:
cd ~/APIJSON-Demo/APIJSON-Java-Server/APIJSONDemo

运行 MAVEN 的 mvn 命令,在target目录中生成jar文件:

mvn clean install

在当前目录中,运行生成的jar文件,默认端口 8080:

java -jar target/apijson-demo-7.1.5.jar

要偷懒也可以使用通配符*

java -jar target/*.jar
  1. 测试

在官网找到测试工具,也可以使用curl, swagger, postman等。
在这里插入图片描述
修改服务器地址,及POST/GET等选项,点击发送请求:

在这里插入图片描述

返回json格式数据:

在这里插入图片描述
6. 其他

如果要自定义java bean 或者 登陆验证等其他后端开发需求,可以看APIJSONBoot项目

相关文章:

  • 5.DJI-PSDK:Psdk开发负载与Msdk的应用app进行交互:
  • Spring Boot 常用依赖介绍
  • 什么是自动化测试?
  • 既然安装了WSL2和Ubuntu,那么怎么和windows传递文件(1)
  • Redis安装与基础配置(Windows及linux)
  • 《Vue Router实战教程》22.导航故障
  • 前端工程化:构建高效可维护的现代Web应用
  • 【特权FPGA】之数码管
  • vscode报错:unins000.exe 尝试在目标目录创建文件时发生一个错误
  • Pyside6使用QtWebEngine实现GUI嵌入网页内容
  • 【愚公系列】《Python网络爬虫从入门到精通》047-验证码识别(第三方验证码识别)
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_基础功能示例(CalendarView01_01)
  • 【ESP32-C6】Base on esptool commands to enable Flash Encryption and Secure Boot
  • 5G中的DU和CU的作用
  • 【C++篇】C++模板初阶:从泛型编程到函数模板与类模板的全面解析
  • 【closerAI ComfyUI】nunchaku加持下,FLUX四重控制万物迁移秒出图,晋升生产力工具,开源界福音!收藏学习
  • 如何打通虚拟化-容器环境并保障流量安全?SmartX VCCI 方案升级!
  • Google A2A协议,是为了战略性占领标准?
  • 【端到端】端到端自动驾驶依赖Occupancy进行运动规划?还是可以具有生成局部地图来规划?
  • 在新一代人工智能技术引领下的,相互联系、层层递进的明厨亮灶开源了
  • c 做网站教程/代写文章多少钱
  • wordpress 站点收录/排名优化价格
  • seo网站推广优化费用/外链怎么做
  • bootstrap学校网站模板下载/seo课程
  • 网站服务器租用价格一般多少钱?/百度快照
  • 附近做网站的公司电话/seo手机关键词排行推广