本文已参与「新人创作礼」活动.一起开启掘金创作之路。
低代码后端框架magic-api 是一个基于Java的接口快速开发框架
magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口。 无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。
特性
- 支持
MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer等支持jdbc规范的数据库 - 支持非关系型数据库
Redis、Mongodb、ElasticSearch - 支持动态配置定时任务
- 支持集群部署、接口自动同步
- 支持分页查询以及自定义分页查询
- 支持多数据源配置,支持在线配置数据源
- 支持
SQL缓存,以及自定义SQL缓存 - 支持自定义
JSON结果、自定义分页结果 - 支持对接口权限配置、拦截器等功能
- 支持运行时动态修改数据源
- 支持
Swagger接口文档生成 - 支持可插拔式的插件机制
- 支持
i18n国际化 - 支持团队协作,可显示在线人数、以及他人正在编辑和浏览的接口等功能
- 基于magic-script (opens new window)脚本引擎,动态编译,无需重启,实时发布
- 支持
Linq式查询,关联、转换更简单 - 支持数据库事务、
SQL支持拼接,占位符,判断等语法 - 支持文件上传、下载、输出图片
- 支持脚本历史版本对比与恢复
- 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
- 支持导入
Spring中的Bean、Java中的类 - 支持在线调试
- 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作
\
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:Mapinsert的列和值,可省略(通过column设置)
// insert into sys_user(user_name,role) values('李富贵','admin')
return db.table('sys_user').insert({ user_name : '李富贵', role : 'admin'})
# update
- 入参:
data:Mapinsert的列和值,可省略(通过column设置)
// update sys_user set user_name = '王二狗' where id = 1
return db.table('sys_user').primary('id').update({ id: 1, user_name : '王二狗'})
# save
- 入参:
data:Mapinsert或update的列和值,可省略(通过column设置) - 入参:
beforeQuery:boolean是否根据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()