doma2で部分一致検索を行う
Doma2で部分一致検索する際
%とかを任意で設定するのは止めたい
組み込み関数を使う
名前 | 関数名 | 例 |
---|---|---|
前方一致 | prefix | where name like /* @prefix(name) */'smith' |
後方一致 | suffix | where name like /* @suffix(name) */'smith' |
前方後方一致 | infix | where name like /* @infix(name) */'smith' |
Dao
KeiyakuDao.java
package com.example.dao; import java.util.List; import org.seasar.doma.Dao; import org.seasar.doma.Select; import com.example.config.AppConfig; import com.example.entity.Keiyaku; import com.example.entity.KeiyakuItem; @Dao(config = AppConfig.class) public interface KeiyakuDao { @Select List<KeiyakuItem> findKeiyakuMeisaiAll(); @Select List<Keiyaku> findNameStartSearchAll(String name); @Select List<Keiyaku> findNameEndSearchAll(String name); @Select List<Keiyaku> findNameContainSearchAll(String name); }
SQL
findNameStartSearchAll.sql
select * from keiyaku where where name like /* @prefix(name) */'smith'
findNameEndSearchAll.sql
select * from keiyaku where where name like /* @suffix(name) */'smith'
findNameContainSearchAll.sql
select * from keiyaku where where name like /* @infix(name) */'smith'
実行結果
実行時のSQLを記載
select * from keiyaku where name like 'hoge%' select * from keiyaku where name like '%hoge' select * from keiyaku where name like '%hoge%'
わかったこと
- 部分一致検索にはdoma2の組み込み関数を使用することで自動的に%などを設定してくれる