PS: Есть два способа передать несколько параметров в ibatis3: один - использовать java.map, а другой - использовать Javabean.
Когда только один параметр передается в файл xxxmapper.xml, вы можете просто использовать «_parameter» для получения параметров, передаваемых в xxxmapper.java и заменить их в запрос, например:
(1) Ниже определено в файле xxxmapper.java:
Список <string> selectAllairportCode (логическое отображение);
(2) В настоящее время вы можете использовать «_parameter» для получения этого параметра в соответствующем файле xxxmapper.xml:
<select id = "selectAllairPortCode" resultType = "java.lang.string" parametertype = "java.lang.boolean"> select departure_airport из usr_air_line union selectarival_airport от usr_air_line <if test = "_ parameter == rue '> select rel_departure_airport usar_line <if test =" _ USR_AIR_LINE UNIONELECTRELEL_ARRIVAL_AIRPORT от USR_AIR_LINE UNIONELECTRELE_ARRIVAL_AIRPORT из USR_AIR_LINE UNIONELELECTREL_AIRPORT из USR_AIR_LINE UNIONELECTREL_ARRIVAL_AIRPORT из USR_AIR_LINE </if> </select>
Однако, если в файле xxxmapper.java передаются несколько параметров, приведенная выше форма не может использоваться для получения параметров. В настоящее время есть две решения для решения этой проблемы:
Передайте карту <строки, объект> коллекция в файл XML, а затем различные параметры в коллекции карт могут использоваться обычно в файле XML.
Конкретные примеры заключаются в следующем:
(1) Ниже определено в файле xxxmapper.java:
Список <Airline> findall (map <string, object> parms);
(2) Передайте параметры для карты в конкретном классе реализации, определенной выше:
Общедоступный список
(3) В настоящее время в соответствующем файле xxxmapper.xml используется «java.util.map» для получения этой коллекции карт:
<sql id = "sqlfileders"> <bind name = "fileders" value = "#{'id': 'id', 'departureairport': 'desturort_airport', 'reldepartureairport': 'rel_departure_airport', 'arvivalairport': 'arriva L_airport ',' relarrivivalairport ':' rel_arrival_airport ',' popstatus ':' pop_status ',' status ':' status ',' creator ':' creator ',' createTime ':' create_time '} " /> <bind name = "javapropertys" value = "#{'id': 'id', 'destreure_airport': 'destureairport', 'rel_departure_airport': 'reldepartureairport', 'rastrival_airport': 'arr ivalairport ',' rel_arrival_airport ':' relarrivalairport ',' pop_status ':' popstatus ',' status ':' status ',' creator ':' creator ',' create_time ':' createTime '} " /> < /sql> <select id =" findall "resultmap =" createMap'} " /> < /sql> <select id =" findall "?" ParameterType = "java.util.map"> <! [Cdata [Select x.* From (select z.*, rownum numbers from (]]> выберите <includ refid = "base_column_list" /> fromusr_air_line <where> <if test = "airline.departureairport! #{airline.departureairport} </if> <if test = "airline.arrivalairport! = null"> и arrival_airport =#{airline.arrivalairport} </if> <if test = "airline.reldepartureAirport! test = "Airline.RelarivalAirport! = null"> и rel_arrival_airport = #{Airline.RelarivalAirport} </if> <if test = "Airline.popstatus! = null"> и Pop_status = #{airline.popstatus} </if test = " #{airline.status} </if> </where> <if test = "page.sortname! = null"> <includ refid = "sqlfileders"/> <bind name = "orderfield" value = " #this.fileders [page.sortname]"/> порядок $ {orderfield} $ {page.sortorder} </> <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <) <). ]]>#{page.to} <! [cdata [) x, где x.numbers> =]]>#{page.from} </select>Примечание. Приведенный выше пример реализует данные запроса на страницу. Мы можем обнаружить, что использование карты для передачи параметров не очень хорошо, потому что это делает возможным, что в интерфейсе есть только один параметр карты. Когда другие поддерживают это, они не уверены, какие параметры передать в эту карту.
2. Решите проблему, добавив аннотацию @param к параметрам:
(1) Добавить аннотацию @param в параметры в методе файла xxxmapper.java. Значения в этой аннотации соответствуют имени параметра, используемому в файле XML:
Airlines SelectEffectiveReirline (@Param ("DepartureAirport") String Departmentport,@param ("grrialairport") строка grrivalort,@param ("status") bigdecimal status);(2) В настоящее время соответствующие места в файле xxxmapper.xml могут использоваться обычно в аннотации @param:
<select id = "selectEffectiveArline" resultMap = "baseresultmap" parametertype = "java.util.map"> select <includ refid = "base_column_list" /> fromusr_air_line <где> <if test = "DepartureAirport! = null"> departure_airport = #{depareairport} <fiaRport} <fiArport} <fiARport} <fiARport} <fiARport} <fiARport} <fiARport} <fiARport} <fiARport} <fiARport} <fairport! null "> и arrival_airport = #{grrialairport} </if> <if test =" status! = null "> и status = #{status} </if> </where> </select>Примечание. Следует отметить, что параметры в суждении IF Condition написаны иначе, чем в операторах SQL. Переменные в суждении не добавлены #{}
Ниже я представлю вам два метода передачи нескольких параметров через Mybatis
Карта проходит несколько параметров
ParameterType может быть псевдонимом или полностью квалифицированным именем, map или java.util.map, оба из которых в порядке.
<select id="selectBlogByMap" parameterType="map" resultType="Blog"> select t.ID, t.title, t.content FROM blog t where t.title = #{h_title} and t.content =#{h_content} </select> public void testSelectByMap() { SqlSession session = sqlSessionFactory.Opensession (); Map <string, object> param = new hashmap <string, object> (); param.put ("h_title", "Oracle"); param.put ("h_content", "Пользовательская последовательность"); Блог блог = (блог) Session.selectone ("cn.enjoylife.blogmapper.selectblogbymap", Param); session.close (); System.out.println ("Название блога:"+blog.getTitle ()); } Прохождение нескольких параметров через Javabean
<select id = "selectblogbybean" parametertype = "blog" refultype = "blog"> select t.id, t.title, t.content из блога twheret.title = #{title} и t.content = #{content} </select> public void -sestectbybean () {sqlsession = sqlSecsessessessessessessessessessessessessessessessessessessessessession = SQLSecsesessionSessessionSsessionSsessessionSsession; Блог блог = новый блог (); blog.settitle ("oracle"); blog.setContent («используйте последовательность!»); Блог newblog = (блог) session.selectone ("cn.enjoylife.blogmapper.selectblogbybean", блог); session.close (); System.out.println ("Новый идентификатор блога:"+newblog.getid ()); }