[環境]
Spring Boot + Mybatis
DB(posgresql)
[期待している結果]
MyBatisFormDataで作成した固定値をもとにMybatisでsqlの処理を行い結果を取得したい
[問題点]
Mybatis側で処理が終了する
[行っていること]
Service→Mybatisという処理の流れでServiseから渡した値をもとにMybatis側でSQLの処理を実装しているのですが処理自体がMybatis側で終了してしまいます。
serviceでMybatisから値が返ってくる想定でいたのですがMyBatis3Utlisの部分で強制的に終了してしまいます。
これ自体は本来の動きなのでしょうか??
それともformで指定しているデータがそもそも間違っているためエラーが起きていしまっているのでしょうか?
MyBatisFormData.java
1public class MyBatisFormData { 2 public Long id= Long.valueOf(1); 3 4 public String name = "テスト"; 5 6}
MyBatisService.java
1public class MyBatisService { 2 private final MyBatisMapper myBatisMappar; 3 4 private WhereApplier condition (MyBatisFormData data) { 5 return e -> e.where(Id, isEqualToWhenPresent(data.id) 6 .and(name , isEqualToWhenPresent(data.name))) 7 } 8 //ここの処理が最初に呼ばれる 9 public List<String> list (MyBatisFormData data) { 10 WhereApplier commonWhere = whereFromCondition(data); 11 //ここで処理が終了する 12 long count = myBatisMappar.count(e -> e.applyWhere(commonWhere )); 13 //ここに処理がいかない 14 if(0<count) { 15 myBatisMappar.select( 16 e -> e.applyWhere(commonWhere) 17 //ここのpageの数値は別のところで定義し他結果を反映しております。 18 .limit(page).offset(page)); 19 }else{ 20 } 21 return /省略/ 22} 23 24}
MyBatisMapper
1public interface MyBatisMapper extends CommonCountMapper { 2 SelectProvider(type = SqlProviderAdapter.class, method = "select") 3 @Results(id = "Result", value = { 4 @Result(column = "id", property = "id", jdbcType = JdbcType.BIGINT,id = true), 5 @Result(column = "name", property = "name", jdbcType = JdbcType.VARCHAR), 6 List<Detail> selectMany(SelectStatementProvider selectStatement); 7 8 BasicColumn[] selectList = 9 BasicColumn.columnList(id,name); 10 11 default List<Detail> select(SelectDSLCompleter completer) { 12 QueryExpressionDSL<SelectModel> start = 13 SqlBuilder.select(selectList).from(user); 14 return MyBatis3Utils.selectList(this::selectMany, start, completer); 15 } 16 17 default long count(SelectDSLCompleter completer) { 18 QueryExpressionDSL<SelectModel> start = 19 CountDSL<SelectModel> start = SqlBuilder.countFrom(user) 20 //ここで処理が終了しserviceの先に処理がすすまない 21 return MyBatis3Utils.countFrom(this::count, start, completer); 22 } 23}
あなたの回答
tips
プレビュー