MyBatis-Plusのデータ登録などの使用例

この記事を書いたチーム:frontier

MyBatis-Plusについて

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

MyBatis-PlusJavaのフレームワークであるMyBatisの拡張版です。MyBatis-Plus を使うことで、xmlファイルにSQL文を記載することなくデータの取得や登録、更新などを実装することができます。ここではいくつかの使用例を紹介します。
使用例ではCustomerテーブルに対して、データ登録、更新、存在チェックをする方法について記載します。まずは使用例に関する前提についてです。
Customerテーブルは以下のように定義します。

ファイル構成は以下の通りです。
src/main/java
    |_ com.example
               |_controller
                    |_CustomerController.java
               |_dao
                    |_CustomerMapper.java
               |_entity
                    |_Customer.java
               |_service
                    |_CustomerService.java
                      impl
                        |_ CustomerServiceImpl.java 

Customer.javaCustomerMapper.javaCustomerService.javaは以下の内容です。各項にてCustomerServiceImpl.javaでどのようにMyBatis-Plusを使うかを記載します。

CustomerMapper.java

Customer.java

CustomerService.java

 

データ登録

データ登録の例として、IServiceインターフェースのsaveメソッドについて記載します。
引数に登録データを渡すことでINSERTが実行され、データ登録の成否がbooleanで返ってきます。(以降のCustomerServiceImpl.javaは簡略な例にするため登録データなどの設定値をSetterで記述します。)

CustomerServiceImpl.java

 

データ更新

データ更新の例として、IServiceインターフェースのupdateByIdメソッドについて記載します。
引数に更新データを渡すことでUPDATEが実行され、データ登録の成否がbooleanで返ってきます。UPDATEの条件は、Customer.java@TableIdで指定された主キー項目になります。ただし、MyBatis-Plusは複合主キーをサポートしていないため、テーブルが複合主キーの場合はupdateByIdメソッドを使うことはできません。

CustomerServiceImpl.java

 

データ存在チェック

存在チェックの例として、BaseMapperインターフェースのexistsメソッドについて記載します。
引数に検索条件を渡すことでSELECT COUNT(*)が実行され、データの存在有無の結果がbooleanで返ってきます。

CustomerServiceImpl.java

 

MyBatis-Plusでサポートされていないこと

UPDATEで記載した複合主キーの他に、MyBatis-Plusでは複数テーブルを結合してデータ取得することについてもサポートされていません。サポートされていないケースについては、MyBatisSQL文を書くような対応をすることになります。

 

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス