Android連接MySQL數據庫的方法

由于之前那篇文章是在大學期間好多東西都不太懂的時候寫的,放到現在再來看總感覺到處都是問題(或者說已經看不懂啦)。但是看到每天上漲的那點閱讀量,想了想還是把這個再用相對正常的方式再重寫一遍吧。
為了省事本項目的服務端采用SpringBoot + MybatisPlus開發(fā),要是Java水平還不夠的小伙伴就自己再稍微努力努力?(°?°)?

一、服務端
首先對SpringBoot提一嘴,這玩意是用來簡化Spring應用的初始搭建以及開發(fā)過程的。
創(chuàng)建好工程之后在pom文件中導入相關依賴,用到的大概有mysql、druid、mybatis。mybatis-plus、fastjson、lombok等。
隨后對配置信息進行設置,這里采用yml文件的格式。
隨后就是緊張刺激(并不)的代碼開發(fā)啦。

由于本項目只是為了實現Android訪問MySQL數據庫,就只是模擬實現了一個用戶登錄功能。
先準備好MySQL中的數據:

對應好實體類中的User類:
由于使用了MybatisPlus,所以數據層會顯的非常簡單:
業(yè)務層接口:
業(yè)務層實現:
表現層:
其中的Result為通用的返回結果類,包含了狀態(tài)碼、錯誤信息以及返回數據等內容。
至此,服務端的開發(fā)就告一段落。運行啟動類,進行調試。

二、Android端
創(chuàng)建完工程后簡單的寫兩個頁面,一個用于登錄,一個用于展示信息。


對頁面控件進行初始化完成后,給按鈕添加一個點擊事件:
具體實現思路是:使用OkHttp向服務端發(fā)送請求,將服務端返回的JSON數據用GSON進行解析,從而將在數據庫中獲取到的信息進行展示。具體實現如下:
其中的請求地址使用了NATAPP內網穿透工具將本地的端口進行映射,使得外網也可以訪問。(免費隧道每次啟動時地址會發(fā)生變化)

啟動項目:

輸入正確的賬號密碼信息,點擊登錄,并沒有反應。檢查服務器后發(fā)現報了一個異常:
2023-02-22 17:42:58.922? WARN 9424 --- [p-nio-80-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
經排查發(fā)現,在服務端接收參數時使用了@RequestBody注解,表示我們接收的是一個JSON格式的數據,但是OkHttp發(fā)送的數據并不是JSON數據,因此在這里報了異常。那么只要在接收參數時直接用兩個變量接收即可解決這個問題,修改UserController中的代碼:
重啟服務,后再次嘗試登陸:

訪問成功,撒花?ヽ(°▽°)ノ?