- 開発技術
MyBatis-Plusのデータ登録などの使用例
- #SpringBoot
- #Java

MyBatis-Plusについて
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
MyBatis-PlusはJavaのフレームワークであるMyBatisの拡張版です。MyBatis-Plus を使うことで、xmlファイルにSQL文を記載することなくデータの取得や登録、更新などを実装することができます。ここではいくつかの使用例を紹介します。
使用例ではCustomerテーブルに対して、データ登録、更新、存在チェックをする方法について記載します。まずは使用例に関する前提についてです。
Customerテーブルは以下のように定義します。
1 2 3 4 5 6 |
CREATE TABLE `customer` ( `CUSTOMER_CODE` varchar(10) NOT NULL COMMENT '得意先コード', `CUSTOMER_NAME` varchar(40) NOT NULL COMMENT '得意先名', `ADDRESS` varchar(40) DEFAULT NULL COMMENT '住所', PRIMARY KEY (`CUSTOMER_CODE`) ) |
ファイル構成は以下の通りです。
src/main/java
|_ com.example
|_controller
|_CustomerController.java
|_dao
|_CustomerMapper.java
|_entity
|_Customer.java
|_service
|_CustomerService.java
impl
|_ CustomerServiceImpl.java
Customer.java、CustomerMapper.java、CustomerService.javaは以下の内容です。各項にてCustomerServiceImpl.javaでどのようにMyBatis-Plusを使うかを記載します。
CustomerMapper.java
1 2 |
public interface CustomerMapper extends BaseMapper<Customer> { } |
Customer.java
1 2 3 4 5 6 7 8 |
@Data @TableName("customer") public class Customer { @TableId(value = "CUSTOMER_CODE") private String customerCode; private String customerName; private String address; } |
CustomerService.java
1 2 3 4 5 |
public interface CustomerService extends IService<Customer>{ boolean createCustomer() throws Exception; boolean updateCustomer() throws Exception; boolean existsCustomer(); } |
データ登録
データ登録の例として、IServiceインターフェースのsaveメソッドについて記載します。
引数に登録データを渡すことでINSERTが実行され、データ登録の成否がbooleanで返ってきます。(以降のCustomerServiceImpl.javaは簡略な例にするため登録データなどの設定値をSetterで記述します。)
CustomerServiceImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Service public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements CustomerService { @Override @Transactional public boolean createCustomer() throws Exception { Customer data = new Customer(); data.setCustomerCode(“0000000001”); data.setCustomerName(“ABC社”); data.setAddress(“愛知県△△市”); return this.save(data); } } |
データ更新
データ更新の例として、IServiceインターフェースのupdateByIdメソッドについて記載します。
引数に更新データを渡すことでUPDATEが実行され、データ登録の成否がbooleanで返ってきます。UPDATEの条件は、Customer.javaの@TableIdで指定された主キー項目になります。ただし、MyBatis-Plusは複合主キーをサポートしていないため、テーブルが複合主キーの場合はupdateByIdメソッドを使うことはできません。
CustomerServiceImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 |
@Service public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements CustomerService { @Override @Transactional public boolean updateCustomer() throws Exception { Customer data = new Customer(); data.setCustomerCode(“0000000001”); data.setAddress(“愛知県〇〇市”); return this.updateById(data); } } |
データ存在チェック
存在チェックの例として、BaseMapperインターフェースのexistsメソッドについて記載します。
引数に検索条件を渡すことでSELECT COUNT(*)が実行され、データの存在有無の結果がbooleanで返ってきます。
CustomerServiceImpl.java
1 2 3 4 5 6 7 8 9 10 |
@Service public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements CustomerService { @Override public boolean existsCustomer() { LambdaQueryWrapper<Customer> query = Wrappers.lambdaQuery(); query.eq(Customer::getCustomerCode, “0000000001”); return this.exists(query); } } |
MyBatis-Plusでサポートされていないこと
UPDATEで記載した複合主キーの他に、MyBatis-Plusでは複数テーブルを結合してデータ取得することについてもサポートされていません。サポートされていないケースについては、MyBatisでSQL文を書くような対応をすることになります。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>