低代码后端框架magic-api 是一个基于Java的接口快速开发框架

849 阅读2分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。

低代码后端框架magic-api 是一个基于Java的接口快速开发框架

magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。 无需定义ControllerServiceDaoMapperXMLVO等Java对象即可完成常见的HTTP API接口开发。

特性

  • 支持MySQLMariaDBOracleDB2PostgreSQLSQLServer等支持jdbc规范的数据库
  • 支持非关系型数据库RedisMongodbElasticSearch
  • 支持动态配置定时任务
  • 支持集群部署、接口自动同步
  • 支持分页查询以及自定义分页查询
  • 支持多数据源配置,支持在线配置数据源
  • 支持SQL缓存,以及自定义SQL缓存
  • 支持自定义JSON结果、自定义分页结果
  • 支持对接口权限配置、拦截器等功能
  • 支持运行时动态修改数据源
  • 支持Swagger接口文档生成
  • 支持可插拔式的插件机制
  • 支持i18n国际化
  • 支持团队协作,可显示在线人数、以及他人正在编辑和浏览的接口等功能
  • 基于magic-script (opens new window)脚本引擎,动态编译,无需重启,实时发布
  • 支持Linq式查询,关联、转换更简单
  • 支持数据库事务、SQL支持拼接,占位符,判断等语法
  • 支持文件上传、下载、输出图片
  • 支持脚本历史版本对比与恢复
  • 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
  • 支持导入Spring中的BeanJava中的类
  • 支持在线调试
  • 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作

\

magic-api.ssssssss.org.cn/magic/web/i…\

\

增删改查

运行时生成的SQL为:select * from sys_user where id = ?

参数id值会被注入为123

此方法可以避免sql注入。

var id = 123;
return db.select("""
    select * from sys_user where id = #{id}
""");

操作入口:db.table('table_name')

# logic

  • 作用:设置本查询是带有逻辑删除的,在执行delete方法时,会转换为update语句,在执行select相关方法时,会拼接logic_field <> logic_value

# withBlank

  • 作用:设置后续插入或修改时,不过滤空值。

# column

  • 入参:column: String 列名
  • 作用:设置要查询列的,select语句中有效

# column

  • 入参:column: String 列名
  • 入参: value : Object
  • 作用:设置要操作的列的值,非select语句中有效

# primary

  • 入参:primary: String 主键
  • 入参:defaultValue: Object 插入时使用的默认值,可省略
  • 作用:设置主键列,在update中语句有效,或save方法判断标准

# insert

  • 入参: data : Map insert的列和值,可省略(通过column设置)
// insert into sys_user(user_name,role) values('李富贵','admin')
return db.table('sys_user').insert({ user_name : '李富贵', role : 'admin'})

# update

  • 入参: data : Map insert的列和值,可省略(通过column设置)
// update sys_user set user_name = '王二狗' where id = 1
return db.table('sys_user').primary('id').update({ id: 1, user_name : '王二狗'})

# save

  • 入参: data : Map insertupdate的列和值,可省略(通过column设置)
  • 入参: beforeQueryboolean 是否根据id查询有没有数据,可省略(默认false)
// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','王二狗');
return db.table('sys_user').primary('id', uuid()).save({user_name: '王二狗'});
// insert into sys_user(user_name) values('王二狗');
return db.table('sys_user').primary('id').save({user_name: '王二狗'});
// update sys_user set user_name = '王二狗' where id = 1
return db.table('sys_user').primary('id').save({id: 1,user_name: '王二狗'});

# select

查询list(与db.select 作用相同)

// select * from sys_user
return db.table('sys_user').select()

# page

分页查询(与db.page 作用相同)

// select * from sys_user
return db.table('sys_user').page()

# where

设置查询条件

  • eq --> ==
  • ne --> <>
  • lt --> <
  • gt --> >
  • lte --> <=
  • gte --> >=
  • in --> in
  • notIn --> not in
  • like --> like
  • notLike --> not like
// select * from sys_user where user_name like '%李富贵%' and role = 'admin'
return db.table('sys_user')
    .where()
    .like('user_name','%李富贵%')
    .eq('role','admin')
    .select()