2015-01-16 4 views
0

У меня есть таблица с некоторыми полями и некоторая форма поиска для этой таблицы. Я хочу добавить способность фильтровать элементы в таблице, используя эту форму. Чтобы реализовать это, я хочу сделать выбор из таблицы с параметрами, полученными из формы поиска.лучший способ реализовать фильтрацию с помощью mybatis

Но проблема в Что такое лучший способ реализовать его с помощью MyBatis и его XML-карты?

мне не нравится мое решение, потому что, если до 10 параметров - запрос будет огромным ...

<select id="getFilteredDevelopers" parameterType="map" resultMap="DeveloperResult"> 
    select 
     developer_id, 
     private_information 
    from pmc.developer 
    <choose> 
     <when test="filterId != null and filterPrivateInformation == null"> 
      where developer_id like #{filterId} 
     </when> 
     <when test="filterId != null and filterPrivateInformation != null"> 
      where developer_id like #{filterId} and private_information like #{filterPrivateInformation} 
     </when> 
     <when test="filterId == null and filterPrivateInformation != null"> 
      where private_information like #{filterPrivateInformation} 
     </when> 
    </choose> 
</select> 

ответ

0

Ну ... Я не смог найти что-то лучше, чем

<select id="getFilteredProjects" resultMap="ProjectResult" parameterType="map"> 
    select 
     project_id, 
     project_name, 
     project_owner 
    from pmc.project 
    where TRUE 
    <choose> 
     <when test="projectId != null"> 
      and project_id like #{projectId} 
     </when> 
     <when test="projectName != null"> 
      and project_name like #{projectName} 
     </when> 
     <when test="projectOwner != null"> 
      and project_owner like #{projectOwner} 
     </when> 
    </choose> 
</select> 

Хотя это лучше, чем прежде.

+0

Просто небольшое изменение может быть, но вы можете заменить часть «где TRUE» на «», а затем закрыть тег после. – yalpertem

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