欢迎光临
我们一直在努力

鸿蒙+Java+MySQL全栈开发实战

基于鸿蒙(ArkTS)、Java、MySQL的全栈开发,其核心在于利用ArkTS构建鸿蒙原生应用前端,使用Java开发后端服务,并通过MySQL进行数据持久化。

一、技术栈与职责划分

技术层技术选型核心职责与说明
前端 (鸿蒙应用) ArkTS (基于TypeScript) 构建鸿蒙原生应用的UI界面与交互逻辑,利用声明式UI开发范式。
后端 (服务端) Java (Spring Boot) 提供RESTful API,处理业务逻辑,连接数据库,是应用的核心服务层。
数据库 MySQL 8.0+ 负责数据的结构化存储、查询与管理,是应用的数据持久化层。
辅助工具 DevEco Studio, IntelliJ IDEA, Git 分别为鸿蒙前端、Java后端开发IDE及版本控制工具。

二、核心开发流程与代码示例

1. 数据库设计 (MySQL)

首先,在MySQL中创建数据库和表。例如,为一个简单的“任务”应用设计表结构:

— 创建数据库
CREATE DATABASE IF NOT EXISTS harmony_app DEFAULT CHARACTER SET utf8mb4;
USE harmony_app;

— 创建任务表
CREATE TABLE task (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL COMMENT '任务标题',
description TEXT COMMENT '任务描述',
completed BOOLEAN DEFAULT FALSE COMMENT '是否完成',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB COMMENT='任务表';

— 为查询字段创建索引以优化性能
CREATE INDEX idx_task_completed ON task(completed);

此设计包含了基础字段、注释及索引优化。

2. 后端开发 (Java Spring Boot)

使用Spring Boot快速搭建RESTful API服务。

  • 项目依赖 (pom.xml 关键部分):

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    </dependency>
    </dependencies>

  • 实体类 (Entity):

    import jakarta.persistence.*;
    import java.time.LocalDateTime;

    @Entity @Table(name = "task")
    public class Task {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String title;
    private String description;
    private Boolean completed = false;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;

// 省略 Getter、Setter 以及 @PrePersist, @PreUpdate 注解方法(用于自动设置时间) } ```

  • 数据访问层 (Repository):

    import org.springframework.data.jpa.repository.JpaRepository;
    import java.util.List;

    public interface TaskRepository extends JpaRepository<Task, Integer> {
    List<Task> findByCompleted(Boolean completed);
    }

  • 业务控制层 (Controller):

    import org.springframework.web.bind.annotation.*;
    import java.util.List;

    @RestController
    @RequestMapping("/api/tasks")
    public class TaskController {
    @Autowired
    private TaskRepository taskRepository;

    @GetMapping public List<Task> getAllTasks(@RequestParam(required = false) Boolean completed) {
    if (completed != null) {
    return taskRepository.findByCompleted(completed);
    }
    return taskRepository.findAll();
    }

    @PostMapping public Task createTask(@RequestBody Task task) {
    // 在实际项目中,应对传入的task对象进行校验
    return taskRepository.save(task);
    }
    // 其他接口:GET /{id}, PUT /{id}, DELETE /{id} 等 }

    此部分构建了基础的CRUD API,并通过JPA简化了数据库操作。

  • 应用配置 (application.properties):

    spring.datasource.url=jdbc:mysql://localhost:3306/harmony_app?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=your_username
    spring.datasource.password=your_password
    spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true ```

3. 前端开发 (鸿蒙 ArkTS)

在DevEco Studio中,使用ArkTS开发界面并调用后端API。

  • 页面UI与数据模型 (TaskList.ets): // 导入必要的模块 import http from '@ohos.net.http';
    import promptAction from '@ohos.promptAction';

    @Entry @Component struct TaskList {
    // 定义任务数据数组
    @State taskList: Array<Task> = []
    // 定义后端API基础地址(注意:真机调试需配置网络权限并使用实际IP)
    private baseUrl: string = 'http://your_backend_ip:8080/api/tasks'

    // 构建UI build() {
    Column({ space: 10 }) {
    // 1. 标题
    Text('任务列表')
    .fontSize(30)
    .fontWeight(FontWeight.Bold)

    // 2. 列表展示
    List({ space: 5 }) {
    ForEach(this.taskList, (item: Task) => {
    ListItem() {
    Row({ space: 10 }) {
    // 任务完成状态复选框 Checkbox({ name: 'completed', group: 'taskGroup' })
    .select(item.completed)
    .onChange((value: boolean) => {
    this.updateTaskStatus(item.id, value)
    })
    // 任务标题和描述 Column({ space: 5 }) {
    Text(item.title).fontSize(18)
    Text(item.description).fontSize(14).fontColor(Color.Gray)
    }
    }
    .padding(10)
    .width('100%')
    .justifyContent(FlexAlign.Start)
    }
    })
    }
    .layoutWeight(1) // 列表占满剩余空间
    .width('100%')

    // 3. “添加任务”按钮
    Button('添加新任务')
    .onClick(() => {
    // 跳转到添加任务页面或弹出对话框
    promptAction.showToast({ message: '功能待实现' })
    })
    .width('90%')
    }
    .padding(20)
    .width('100%')
    .height('100%')
    .onAppear(() => {
    // 页面显示时加载数据
    this.loadTasks()
    })
    }

    // 加载任务列表的方法 async loadTasks() {
    let httpRequest = http.createHttp()
    try {
    let response = await httpRequest.request(this.baseUrl, {
    method: http.RequestMethod.GET,
    header: { 'Content-Type': 'application/json' }
    })
    if (response.responseCode === 200) {
    this.taskList = JSON.parse(response.result as string)
    } else {
    promptAction.showToast({ message: `加载失败: ${response.responseCode}` })
    }
    } catch (err) {
    promptAction.showToast({ message: `网络请求异常: ${err.message}` })
    } finally {
    httpRequest.destroy()
    }
    }

    // 更新任务状态的方法 async updateTaskStatus(taskId: number, completed: boolean) {
    let httpRequest = http.createHttp()
    try {
    let response = await httpRequest.request(`${this.baseUrl}/${taskId}`, {
    method: http.RequestMethod.PUT,
    header: { 'Content-Type': 'application/json' },
    extraData: JSON.stringify({ completed: completed })
    })
    if (response.responseCode === 200) {
    promptAction.showToast({ message: '更新成功' })
    this.loadTasks() // 刷新列表 }
    } catch (err) {
    promptAction.showToast({ message: `更新失败: ${err.message}` })
    } finally {
    httpRequest.destroy()
    }
    }
    }

    // 任务数据模型
    class Task {
    id: number = 0
    title: string = ''
    description: string = ''
    completed: boolean = false }
    此代码展示了鸿蒙ArkTS声明式UI的构建、状态管理(@State)以及通过@ohos.net.http模块进行网络请求的关键流程。

三、关键配置与联调要点

  • 网络权限与安全:鸿蒙应用需要在module.json5配置文件中声明网络权限(ohos.permission.INTERNET)。后端Spring Boot应用如需跨域访问,需配置CORS。
  • 真机联调网络:当鸿蒙应用在真机上运行时,baseUrl中的localhost或 127.0.0.1需替换为运行后端服务的电脑在局域网中的实际IP地址。
  • 数据交互格式:前后端统一使用JSON作为数据交换格式,确保Content-Type: application/json。
  • 进阶特性:在实际项目中,后端应考虑添加JWT认证、API文档(如Swagger)、更完善的错误处理与日志;前端需处理更复杂的UI状态、路由导航及本地数据缓存。

  • 参考来源

    • 4年多了,为何还有人说华为鸿蒙系统,是安卓套壳?_鸿蒙系统忽悠了多少人
    • 鸿蒙系统的崛起之路:开发者如何抓住机遇,迎接挑战?✨
    • 什么是全栈?
    • 鸿蒙全栈开发实战:ArkTS + Python + MySQL 8.0 构建智能家教应用
    • 新手必备!2024年 Web 全栈开发路线图

     

    赞(0)
    未经允许不得转载:171主机测评 » 鸿蒙+Java+MySQL全栈开发实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址