springBoot建立資料庫相關文件及swagger自動產生WebAPI規格文件
此篇為自行建置的SpringBoot製作簡易CRUD、配置MyBatis Generator及遇到的問題和解決
1.建立完springBoot專案後,資料夾長這樣
啟動SpringBoot專案console所印出的訊息
application.properties
spring.datasource.url=jdbc:mysql://mysql ip:mysql port/dbName
spring.datasource.username=mysql username
spring.datasource.password=mysql password
2.建立swagger資訊
pom.xml要輸入swagger相關資訊
建立swaggerConfig
note.emily.controller層
呈現頁面(controller層沒有api相關資訊,所以是空白的)
3.使用Eclipse MyBatis Generator plugin自動產生存取資料表的檔案
下載mybatis Generator
file-> new-> other-> MyBatis-> MyBatis Generator Configuration File 路徑選擇
使用MBG需要與資料庫連線的JDBC driver,所以要先下載MySQL的JDBC driver(MySQL connector for java),這邊是直接透過Maven下載。
然而設定好之後,會需要下載依賴的jar檔,而MBG需要使用MySql Connection的jar Maven預設放在C:\Users\[username]\.m2\repository\mysql\mysql-connector-java\8.0.13
4.建立service、entity、mapper 的package
修改generatorConfig.xml,之後 Rus As Run MyBatis Generator
-> 這邊事先建立好table相關資訊,及mysql連線
[簡單說明]
1. <classPathEntry location : MySql Connection的jar Maven jar檔位置
2. <context id : tableName_mybatis_generator
3. <jdbcConnection connectionURL : "jdbc:mysql://自己設定的mysql ip:mysql port/dbName"
4. driverClass : "com.mysql.cj.jdbc.Driver" password : "自己設定的mysql password"
5. <table tableName : "自行建置的資料表名稱"
可以看到MBG在指定的package中產生了對應的檔案。往後我們就能直接利用MyBatis來存取資料庫的資料表了
6.CRUD範例
新增:
controller層
service層實作
swagger介面
mysql結果
修正:
controller層
service層實作
swagger介面
mysql結果
刪除:
controller層
service層實作
swagger介面
mysql結果
查詢
controller層
-> Vo 前端呈現
service層實作
-> QueryWrapper : Entity對象封裝操作類
-> eq("member_account", "abc") --> member_account=abc
結果
[------ 若出現以下問題,我是這樣解決 -----START------]
1.出現類似 The server time zone value '�x�_�зǮɶ�' is unrecognized....
-> 這代表數據庫與系統時區有差異造成,有兩個解決辦法
1-1 再jdbc連結的URL加上serverTimezone=UTC即可
1-2 修改 my.ini 配置檔,搜尋[mysqld]後新增default-time-zone='+08:00'
重啟mysql後執行show variables like '%time_zone%';
2.出現 Project moneynote does not exist
-> 這代表 targetProject 的屬性位置沒有正確,這邊解決辦法為眼睛張大仔細檢查
3.出現 Unknown database 'note'
-> 代表沒有note這個database,這時去mysql看一下
疑?還真的沒有database耶!
創note database
5.增加CRUD後,swagger Execute,出現這個錯誤 Invalid bound statement (not found)
-> 因為maven項目中src源代碼下的xml等資源文件編譯進classes文件夹,若沒有加這段,則會自動搜索resources下是否有mapper.xml文件
若找不到,則會報org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
解決辦法為,pom.xml 新增紅框這段
[------ 若出現以下問題,我是這樣解決 -----END------]
參考