当前位置: 首页 > news >正文

Spring Boot操作MaxComputer(保姆级教程)

目录

引言

一、引入依赖

二、配置文件 application.properties(信息用自己的奥)

三、实体类User.java

四、UserController

五、UserService

六、UserDao

七、UserDao.xml

八、postman 访问,成功查询数据

附件(修改和删除数据)


引言

  MaxComputer本质上是管理dataworks 中的表,我们如何用Java框架来操作MaxComputer中的表数据呢,有几种方法,今天我推荐的是MaxComputer结合Spring Boot ;MyBatis 的操作方式,这种方法优点是很简单,不用学习新的API 数据mybatis 操作即可。

首先要在阿里云后台创建一张表,下面我用user 表测试

https://maxcompute.console.aliyun.com/cn-shanghai/sql-express

一、引入依赖

      <!-- spring boot 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--添加阿里云的依赖--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-udf</artifactId><version>0.36.4-public</version></dependency><dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-core</artifactId><version>0.36.4-public</version></dependency><!-- MyBatis 依赖 --><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><!-- MaxCompute JDBC 连接驱动 --><dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-jdbc</artifactId><version>3.2.0</version></dependency>

二、配置文件 application.properties(信息用自己的奥)

其中用户名和密码就是 accessKeyId和 accessKeySecret

spring.application.name= huixin-dataworks
# ???
server.port= 8080
aliyun.accessKeyId=
aliyun.accessKeySecret=N8rsIEWSH6AwinhfDp8shiDEHhRbpD
aliyun.endpoint= http://service.cn-shanghai.maxcompute.aliyun.com/api
aliyun.project= liingniu_2023
# MaxCompute 数据源配置
spring.datasource.url=jdbc:odps:http://service.cn-shanghai.maxcompute.aliyun.com/api?project=liingniu_2023
spring.datasource.username=
spring.datasource.password=N8rsIEWSH6AwinhfDp8shiDEHhRbpD
spring.datasource.driver-class-name=com.aliyun.odps.jdbc.OdpsDriver# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml

三、实体类User.java

package com.huixin.model;public class User {private Integer id;private String name;public User(Integer id, String name) {this.id = id;this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public User() {}
}

四、UserController

package com.huixin.controller;import com.huixin.model.User;
import com.huixin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/api")
public class UserController {@Autowiredprivate  UserService userService;/*** 查询数据* @return*/@GetMapping("/users")public List<User> getUsers() {return userService.selectAll();}}

五、UserService

package com.huixin.service;import com.huixin.dao.UserDao;
import com.huixin.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserDao userDao;public List<User> selectAll(){return userDao.getAllUsers();}}

六、UserDao

package com.huixin.dao;import com.huixin.model.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** <p>Project: huixin-dataworks - UserDao</p>* <p>Powered by webrx On 2025-02-27 08:41:08</p>* <p>描述:<p>** @author 简单遗忘 [814736551@qq.com]* @version 1.0* @since 17*/
@Mapper
public interface UserDao {List<User> getAllUsers();}

七、UserDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.huixin.dao.UserDao"><select id="getAllUsers" resultType="com.huixin.model.User">SELECT id, name FROM user LIMIT 10</select></mapper>

八、postman 访问,成功查询数据

附件(修改和删除数据)

MaxCompute 是一个 分布式大数据计算平台,主要用于 批量处理,并不支持像传统数据库那样的 实时更新、删除 操作。它的设计更多地侧重于批处理和大规模数据查询,因此,MaxCompute 中并不直接支持 UPDATEDELETE 操作。

修改

但是可以使用其他方法修改数据(这个语句只修改了 id 为3 的数据其他的不影响)

INSERT OVERWRITE TABLE user
SELECTid,CASEWHEN id = 3 THEN '杨逍'ELSE nameEND AS name
FROM user;

删除

方法一:分区删除

假设 user 表是按 dt 分区的,现在你想删除 dt = '20250227' 的数据。这样会删除整个分区的数据。

ALTER TABLE user DROP PARTITION (dt = '20250227');

方法二:覆盖删除

如果你不使用分区或需要删除特定的数据,最常见的方法是通过 INSERT OVERWRITE 覆盖数据,将不需要的数据排除。

示例:删除 id = 3 的数据

INSERT OVERWRITE TABLE user
SELECT * FROM user WHERE id != 3;

http://www.lryc.cn/news/544704.html

相关文章:

  • Spring的构造注入
  • 服务器IPMI用户名、密码批量检查
  • 管理后台环境配置
  • element-ui infiniteScroll 组件源码分享
  • Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具
  • 供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)
  • Day11,Hot100(贪心算法)
  • nss刷题4
  • Eclipse 编译项目指南
  • 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库
  • win11编译pytorch cuda128版本流程
  • Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程
  • IDEA - 查看类的继承结构(通过快捷键查看、通过生成类图查看)
  • Vue 3指令全解析:内置指令与自定义指令实战指南
  • Springboot 自动化装配的原理
  • Linux——进程池
  • Qt基于等待条件QWaitCondition实现的任务队列模型示例
  • 微服务即时通信系统---(六)语音识别子服务
  • JavaWeb基础专项复习5——请求对象和响应对象request and response
  • mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4
  • 大模型WebUI:Gradio全解12——LangChain原理、架构和组件(3)
  • redis --- 相关基础知识整理
  • 如何用 Python 进行机器学习
  • 《Effective Objective-C》阅读笔记(下)
  • 解释Promise的工作原理及其状态
  • SHELL32!ILCombine函数分析之连接两个idl
  • es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
  • Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用
  • ollama和open-webui部署ds
  • 泛微Ecode新增Button调用服务器中的JSP页面里的方法