PS: Existem duas maneiras de passar vários parâmetros no ibatis3: um é usar java.map, e o outro é usar o Javabean.
Quando apenas um parâmetro é passado para o arquivo xxxmapper.xml, você pode simplesmente usar o "_parameter" para receber os parâmetros passados em xxxmapper.java e substituí -los na consulta, por exemplo:
(1) O seguinte é definido no arquivo xxxmapper.java:
Lista <String> selectAlairPortCode (mapeamento booleano);
(2) Neste momento, você pode usar "_parameter" para receber este parâmetro no arquivo xxxmapper.xml correspondente:
<select id = "selectAlairPortCode" resultType = "java.lang.string" parameterType = "java.lang.boolean"> selecione OFATURE_AIRPORT de usr_air_line selectarrival_airport de usr_air_line <se test = "_ parâmetro ==) Union_Deport Rel_Deport USR_AIR_LINE UNIONECTREL_ARRAL_AIRPORT DE USR_AIR_LINE UNIONECRELECTREL_ARRAL_AIRPORT DE USR_AIR_LINE UNIONECTREL_AIRPORT DE USR_AIR_LINE UNIONECTREL_ARRival_Airport de usr_air_line </if> </select>
No entanto, se vários parâmetros forem passados no arquivo xxxmapper.java, o formulário acima não poderá ser usado para receber parâmetros. Neste momento, existem duas soluções para resolver esse problema:
Passe um mapa <string, objeto> Coleção no arquivo XML e, em seguida, os vários parâmetros na coleção de mapas podem ser usados normalmente no arquivo XML.
Exemplos específicos são os seguintes:
(1) O seguinte é definido no arquivo xxxmapper.java:
Lista <Sirline> findAll (map <string, objeto> parms);
(2) Passe os parâmetros para mapear na classe de implementação específica definida acima:
Public List <Sairline> FindAll (página de PageInfo, companhia aérea) {hashmap <string, object> params = new hashmap <string, object> (); params.put ("página", página); params.put ("companhia aérea", companhia aérea); retornar airlineMapper.findall (params);}(3) Neste momento, o arquivo xxxmapper.xml correspondente usa "java.util.map" para receber esta coleção de mapas:
<sql id = "sqlfileders"> <bind name = "Filders" value = "#{'id': 'id', 'departureAirport': 'deature_airport', 'reldepartureAirport': 'rel_departure_airport', 'ArrivalAirport': 'Arriva L_AIRPORT ',' RARRArVALAIRPORT ':' Rel_arrival_airport ',' PopStatus ':' Pop_status ',' Status ':' Status ',' Creator ':' Creator ',' CreateTime ':' Create_time '} " /> <bind name = "javaPropertys" value = "#{'id': 'id', 'parture_airport': 'departureAirport', 'rel_departure_airport': 'reldepartureAirport', 'Arrival_airport': 'arr IVALAIRPORT ',' REL_ARRArival_Airport ':' RARRALivalAIRPORT ',' POP_STATUS ':' POPSTATUS ',' STATUS ':' Status ',' Creator ':' Creator ',' Create_time ':' CreateTime '} " /> < /sql> <select id =" Findall "Result =" Baser "" ParameterType = "java.util.map"> <! [CDATA [selecione x.* de (selecione z. #{airline.departureAirport} </if> <if test = "Airline.arrivalAirport! = null"> e Arrival_airport =#{Airline.arrivalAirport} </se> <if test = Airline.relDepartAirport! test = "Airline.ReLarrivalAirport! = null"> e rel_arrival_airport = #{Airline.ReLarrivalAirport} </if> <if test = "Airline.popstatus! = null"> e pop_status = #{airline.popsatus =} = status "e Pop_status = #{{Airline.popsatus} </se> <se testes =" #{Airline.status} </if> </where> <se test = "Page.SortName! = null"> <incluir refid = "sqlfileders"/> <bind name = "orderfield" value = " #cd.fileders [Page.SortName]"/> Order por $ {Order} ($ { ]]>#{página.to} <! [CDATA [) x onde x.numbers> =]]>#{page.from} </leclect>Nota: O exemplo acima implementa dados de consulta de paginação. Podemos descobrir que o uso do mapa para passar parâmetros não é bom, porque isso possibilita que exista apenas um parâmetro de mapa na interface. Quando outros o mantêm, eles não têm certeza de quais parâmetros passarem para este mapa.
2. Resolva o problema adicionando a anotação @param aos parâmetros:
(1) Adicione a anotação @param aos parâmetros no método do arquivo xxxmapper.java. Os valores nesta anotação correspondem ao nome do parâmetro usado no arquivo XML:
Airlines SelectEffectiveAlline (@param ("departureAirport") String departamentAirport,@param ("Arrivalairport") String ArrivalAirport,@param ("status") status BigDecimal);(2) Neste momento, os locais correspondentes no arquivo xxxmapper.xml podem ser usados normalmente na anotação @param:
<select id = "SelectEffectiveAirline" resultmap = "baseResultmap" parameterType = "java.util.map"> selecione <incluir refid = "base_column_list" /> deusr_air_line <where> if test = "" ifureArport! null "> e Arrival_airport = #{ArrivalAirport} </f>NOTA: Deve -se notar que os parâmetros no julgamento da condição se são escritos de maneira diferente daqueles nas instruções SQL. As variáveis no julgamento se não são adicionadas #{}
Abaixo, apresentarei a você dois métodos de passagem de vários parâmetros através de Mybatis
Mapa passa vários parâmetros
ParameterType pode ser um alias ou nome totalmente qualificado, mapa ou java.util.map, os quais estão OK.
<select id = "selectBLogByMap" ParameterType = "Map" resultType = "Blog"> Selecione T.ID, T.Title, T.Content do Blog t Where t.title = #{h_title} e T.Content = #{H_Content} </select> Void TestselectMy sqlSessionFactory.opensssion (); Mapa <string, object> param = new hashmap <string, object> (); param.put ("h_title", "oracle"); param.put ("h_content", "sequência do usuário"); Blog blog = (blog) session.selectone ("cn.enjoylife.blogmapper.selectblogbymap", param); session.close (); System.out.println ("Título do blog:"+blog.gettitle ()); } Passando vários parâmetros através de Javabean
<select id = "selectblogbybean" parametertype = "blog" resultype = "blog"> selecione t.id, t.title, t.Content do blog twheret.title = #{title} e t.Content = #{content} </select> public voidselectByBean () {sqls Blog blog = novo blog (); blog.setTitle ("Oracle"); blog.setContent ("Use Sequence!"); Blog newblog = (blog) session.selectone ("cn.enjoylife.blogmapper.selectblogbybean", blog); session.close (); System.out.println ("Novo ID do blog:"+newblog.getId ()); }