2016-11-08 11 views
0

Мне нужен предварительный запрос, который будет выполнен для условия фильтра, и передайте результаты для фактической выборки.MyBatis @ Результирующая карта для объекта self вместо свойства

Select * from Table_a where id in (select id from Table_b where X=?) 

MyBatis Mapper выглядит следующим образом

@Select("Select * from Table_a where id in (#{id, mode=IN, jdbcType=INTEGER})") 
ClassA getA(Integer id); 

@Select("select id from Table_b where X=#{xValue, mode=IN, jdbcType=VARCHAR}") 
@Results(value = { @Result(property = "this", column = "ID", one = @One(select = "getA")) }) 
ClassA getAfromB(String xValue); 

Как отобразить результат на весь объект вместо имени параметра?

Я знаю, что могу получить экземпляр класса B и использовать getter для ClassA. Есть ли прямой способ? или Способ добавления результатов фильтрации, как это доступно с myBatis?

+0

почему вы не делаете это в одном выбрать? '@Выберите (« Выберите * из таблицы_а, где id в (выберите id из таблицы_b, где X = # {xValue, mode = IN, jdbcType = VARCHAR}) ") ClassA getA (Integer id);' – griFlo

+0

Просто чтобы иметь больше фрагментированный подход и поддерживать отдельные таблицы вместе , когда изменения относятся к tableB dosenot, необходимо изменить в запросах с помощью таблицыA – Rajadurai

ответ

-1

Действительно один запрос достаточно, и лучше избегать суб-выбора использовать соединение:

SELECT * FROM Table_A a JOIN Table_B b ON a.id = b.id AND b.X=#{xValue, mode=IN, jdbcType=VARCHAR}