2015-01-21 1 views
1

Я передаю результат ResultSet, используя сеанс ibatis ResultHandler.MyBatis - ResultHandler не получает вызов, когда никакие строки не возвращаются оператором select

У меня есть собственная реализация ResultHandler

public class StreamResultHandler<T> implements ResultHandler 
 
{ 
 
    private JobType<T> job; 
 

 
    public StreamResultHandler(ReplicatorType<T> replicatorType) 
 
    { 
 
     this.job = replicatorType; 
 
    } 
 

 
    @Override 
 
    public void handleResult(ResultContext context) 
 
    { 
 
     T type = (T) context.getResultObject(); 
 
     job.callEndPointService(type); 
 
    } 
 
}

Когда мой оператор выбора не имеет каких-либо возвращаемых строк, mybatis даже не вызывая handleResult метод. Я хочу сделать некоторые обновления для базы данных, когда строки не возвращаются.

Есть ли счет/флаг, указывающий количество строк? Как я могу это достичь.

Я использую mybatis-3.2.2.

Любая помощь приветствуется.

Заранее спасибо.

+0

И почему он будет вызван, когда строки не будут возвращены? Разве это не то, что вы ожидаете? Нет результатов - нет звонка? – Kong

ответ

0

Добавить count в вашу команду StreamResultHandler и увеличить его в поле handleResult(). Общие результаты обработки будут доступны в методе count(), как описано ниже.

public class StreamResultHandler<T> implements ResultHandler 
{ 
    private JobType<T> job; 
    private int count; 

    public StreamResultHandler(ReplicatorType<T> replicatorType) 
    { 
     this.job = replicatorType; 
    } 

    @Override 
    public void handleResult(ResultContext context) 
    { 
     T type = (T) context.getResultObject(); 
     job.callEndPointService(type); 
     count++; 
    } 

    public int count() 
    { 
     return count; 
    } 

} 
Смежные вопросы