SpringBoot操作MaxComputer方式(保姆級教程)
引言
MaxComputer本質(zhì)上是管理dataworks 中的表,我們?nèi)绾斡肑ava框架來操作MaxComputer中的表數(shù)據(jù)呢,有幾種方法,今天我推薦的是MaxComputer結(jié)合Spring Boot ;MyBatis 的操作方式,這種方法優(yōu)點是很簡單,不用學(xué)習(xí)新的API 數(shù)據(jù)mybatis 操作即可。
首先要在阿里云后臺創(chuàng)建一張表,下面我用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 連接驅(qū)動 -->
<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 數(shù)據(jù)源配置 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 {
@Autowired
private UserService userService;
/**
* 查詢數(shù)據(jù)
* @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 {
@Autowired
private 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 mapper
PUBLIC "-//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 訪問,成功查詢數(shù)據(jù)

附件(修改和刪除數(shù)據(jù))
MaxCompute 是一個 分布式大數(shù)據(jù)計算平臺,主要用于 批量處理,并不支持像傳統(tǒng)數(shù)據(jù)庫那樣的 實時更新、刪除 操作。
它的設(shè)計更多地側(cè)重于批處理和大規(guī)模數(shù)據(jù)查詢,因此,MaxCompute 中并不直接支持 UPDATE 和 DELETE 操作。
修改
但是可以使用其他方法修改數(shù)據(jù)(這個語句只修改了 id 為3 的數(shù)據(jù)其他的不影響)
INSERT OVERWRITE TABLE user
SELECT
id,
CASE
WHEN id = 3 THEN '楊逍'
ELSE name
END AS name
FROM user;刪除
方法一:分區(qū)刪除
假設(shè) user 表是按 dt 分區(qū)的,現(xiàn)在你想刪除 dt = '20250227' 的數(shù)據(jù)。這樣會刪除整個分區(qū)的數(shù)據(jù)。
ALTER TABLE user DROP PARTITION (dt = '20250227');
方法二:覆蓋刪除
如果你不使用分區(qū)或需要刪除特定的數(shù)據(jù),最常見的方法是通過 INSERT OVERWRITE 覆蓋數(shù)據(jù),將不需要的數(shù)據(jù)排除。
示例:刪除 id = 3 的數(shù)據(jù)
INSERT OVERWRITE TABLE user SELECT * FROM user WHERE id != 3;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaSE網(wǎng)絡(luò)原理之UDP和TCP原理詳解
TCP、UDP都是屬于運輸層的協(xié)議,提供端到端的進程之間的邏輯通信,而IP協(xié)議是提供主機間的邏輯通信,應(yīng)用層規(guī)定應(yīng)用進程在通信時所遵循的協(xié)議,這篇文章主要介紹了JavaSE網(wǎng)絡(luò)原理之UDP和TCP原理的相關(guān)資料,需要的朋友可以參考下2026-01-01
Mybatis?Interceptor線程安全引發(fā)的bug問題
這篇文章主要介紹了Mybatis?Interceptor線程安全引發(fā)的bug問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
一文深入理解Java內(nèi)存區(qū)域與內(nèi)存溢出異常
在Java開發(fā)領(lǐng)域,內(nèi)存溢出猶如一顆隱藏的定時炸彈,隨時可能讓程序崩潰,給用戶帶來糟糕的體驗,這篇文章主要介紹了Java內(nèi)存區(qū)域與內(nèi)存溢出異常的相關(guān)資料,需要的朋友可以參考下2025-11-11
java實現(xiàn)基于SGIP協(xié)議開發(fā)聯(lián)通短信的方法
這篇文章主要介紹了java實現(xiàn)基于SGIP協(xié)議開發(fā)聯(lián)通短信的方法,涉及java短信發(fā)送的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
Java超詳細教你寫一個學(xué)籍管理系統(tǒng)案例
這篇文章主要介紹了怎么用Java來寫一個學(xué)籍管理系統(tǒng),學(xué)籍管理主要涉及到學(xué)生信息的增刪查改,本篇將詳細的實現(xiàn),感興趣的朋友跟隨文章往下看看吧2022-03-03

