Build CRUD APIs Instantly with Magic-API in Spring Boot
This tutorial introduces the magic‑api Java framework, shows how to integrate it with Spring Boot, configure data sources, create the necessary MySQL tables, and implement full CRUD operations, parameter validation, result transformation, transaction handling, and Swagger documentation using concise scripts.
magic-api Overview
magic-api is a Java‑based rapid API development framework that lets you create HTTP interfaces through a UI without writing Controller, Service, DAO, Mapper, XML, or VO classes.
Usage
Below is a practical example of using magic-api to develop API interfaces.
Using in Spring Boot
magic-api natively supports Spring Boot and can be integrated seamlessly.
Add the magic-api starter dependency to pom.xml.
<!-- Interface rapid development framework magic-api -->
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>1.0.2</version>
</dependency>Add datasource and magic-api configuration to application.yml.
spring:
datasource:
url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
magic-api:
web: /magic/web
resource:
type: database
tableName: magic_api_file
prefix: /magic-api
readonly: false
sql-column-case: camel
page-config:
size: size
page: page
default-page: 1
default-size: 10Create the required tables in MySQL: magic_api_file and pms_brand.
CREATE TABLE `magic_api_file` (
`id` bigint(255) NOT NULL AUTO_INCREMENT,
`file_path` varchar(255) DEFAULT NULL,
`file_content` text,
PRIMARY KEY (`id`)
);
CREATE TABLE `pms_brand` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`big_pic` varchar(255) DEFAULT NULL,
`brand_story` varchar(255) DEFAULT NULL,
`factory_status` bit(1) DEFAULT NULL,
`first_letter` varchar(255) DEFAULT NULL,
`logo` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`product_comment_count` int(11) DEFAULT NULL,
`product_count` int(11) DEFAULT NULL,
`show_status` bit(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;Start the project and access the UI at http://localhost:8080/magic/web.
CRUD Operations
Example of creating a brand:
// Insert new brand
return db.table('pms_brand').insert(body);Configure the interface as POST /create with request body.
Example of querying by ID:
return db.table('pms_brand')
.where()
.eq('id', path.id)
.selectOne();Configure as GET /detail/{id} with path variable.
Update example:
return db.table('pms_brand').primary('id', body.id).update(body);Delete example:
return db.update('delete from pms_brand where id=#{id}');Parameter Validation
import assert;
assert.notEmpty(body.name, 400, 'Name cannot be empty!');
assert.notEmpty(body.firstLetter, 400, 'First letter cannot be empty!');
return db.table('pms_brand').insert(body);Result Transformation
var list = db.table('pms_brand').select();
return list.map(item => ({
name: item.name,
firstLetter: item.firstLetter,
showStatus: item.showStatus ? 'Not shown' : 'Shown'
}));Transaction Support
import assert;
var val = db.transaction(() => {
var exist = db.table('pms_brand')
.where().eq('id', body.id).selectOne();
assert.notNull(exist, 404, 'Brand not found!');
db.table('pms_brand').primary('id', body.id).update(body);
return v2;
});
return val;Swagger Integration
Add Swagger dependencies to pom.xml and configure in application.yml:
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies> magic-api:
swagger-config:
name: MagicAPI Test API
title: MagicAPI Swagger Docs
description: MagicAPI test interface information
version: 1.0
location: /v2/api-docs/magic-api/swagger2.jsonAccess Swagger UI at http://localhost:8080/swagger-ui.html to view the generated documentation.
Conclusion
magic-api provides a convenient way to develop APIs with simple scripts, though it remains a niche framework with room for further development.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Su San Talks Tech
Su San, former staff at several leading tech companies, is a top creator on Juejin and a premium creator on CSDN, and runs the free coding practice site www.susan.net.cn.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
