APIJSON使用

1,707 阅读4分钟

APIJSON使用

官方文档,APIJSON可以代替简单的CRUD接口,通过JSON来实现查询SQL,不用再去写Controller、Service、Dao等固定代码,只需要调用http://localhost:8080/get/{}即可

环境准备

  1. 下载项目,可下载压缩包或者克隆项目

APIJSON使用-环境备注-下载项目.png 2. 导入项目,/APIJSON-Java-Server该目录下的为Java版本
APIJSONDemoAPIJSON + SpringBoot 的最简单的初级使用 Demo
APIJSONBootAPIJSON + SpringBoot 的接近生产环境成品的 Demo
APIJSONFinalAPIJSON + JFinal 的接近生产环境成品的 Demo
APIJSONDemo-DruidAPIJSON + SpringBoot + Druid 的简单初级使用 Demo
APIJSONDemo-HikariCPAPIJSON + SpringBoot + HikariCP 的简单初级使用 Demo
APIJSONBoot-MultiDataSource APIJSON + SpringBoot + Druid + HikariCP 的接近生产环境成品的多数据源 Demo, 并且把APIAuto 的源码放到了 src/main/resources/static 目录, 可以用浏览器打开本地主页 http://localhost:8080 来调试

  1. 导入配置表

    创建一个新的数据库或者与现有系统数据库耦合到一起(个人推荐前者,与现有系统数据库耦合会导致表过多),执行MySQL目录下的sys.sql脚本即可,single 目录下的SQL脚本是为单个表的

启动项目

  • APIJSONDemo基础项目
  1. 找到DemoSQLConfig 配置类,修改MySQL连接配置,DEFAULT_SCHEMA 连接数据库名,这个连接的数据库必须包含APIJSON 所需表,下面的连接URL不需要带数据库名

APIJSON使用-启动项目-基础项目.png 2. 找到DemoApplication 启动类,运行,看到如下日志表示启动成功,也可以通过测试http://localhost:8080/get/{}接口测试,返回code为200表示连接成功,如果是404请注意关闭防火墙 APIJSON使用-启动项目-启动成功.png

{
    "ok": true,
    "code": 200,
    "msg": "success",
    "sql:generate|cache|execute|maxExecute": "0|0|0|200",
    "depth:count|max": "1|5",
    "time:start|duration|end": "1638241166455|1|1638241166456"
}
  1. 启动后默认端口为8080,如需修改可在DemoApplicationcustomize 方法中修改
  • APIJSONBoot,接近正式使用环境

    与基础本启动流程一致

  • APIJSONBoot-MultiDataSource, 多数据源版

  1. 启动流程与基础版一致

  2. 该版本可能存在存在依赖问题,有两种方式解决。一是将同目录下的lib目录下的jar添加到Build Path中,二是将pom 文件中相关依赖放开,注意使用maven 方式可能存在版本与实际代码不一致问题,需要注意DemoController ,版本不一致此类需要做一些调整,依据错误提示该即可

APIJSON使用-启动项目-maven依赖.png

  1. 多数据源使用方式

    • application.yml中添加多数据源配置,注意连接URL不要加数据库名

    • DemoDataSourceConfig 中添加与application.yml对应的数据源

    • 接口查询动态切换数据源

      1. 多个数据库在同一服务器下,只需要在查询参数中添加@schema字段即可,该字段是在表名前面增加数据库前缀

        {
            "SouCampaignMain": {
                "id": "1434695625865207810",
                "@schema":"sou_module"
            }
        }
        
      2. 跨服务器使用多数据源,使用@datasource字段,指名使用那个数据源连接,在配合 @schema 使用,就能实现跨服务的动态数据源切换

        {
            "SouCampaignMain": {
                "id": "1434695625865207810",
                "@schema":"sou_module",
                "@datasource": "druid"
            }
        }
        

      注意:@schema@datasource 都是在表名层级下

使用

  • 调式接口时建议使用Postman,数据库建议开启忽略大小写,APIJSON启动会去校验access表权限信息,连接MySQLaccess 会变成首字母大写Access,如果MySQL没有开启忽略大小写,则是提示找不到表,JSON参数使用
  • 需要在APIJSON中增加一张表控制,就需要在access表添加一个权限数据,否则会提示无权访问,accessname 为表的实际名字, alias为别名,查询某个表数据时,使用别名,别名命名规则和Java的一致,驼峰规则(强制性的),APIJSON对命名风格这块限制的很死,如果没有设置别名,那实际的表名就必须按照驼峰规则命名,其余getpost等接口权限可以按照默认值设置或者根据实际项目需求来去设置