PS: Es gibt zwei Möglichkeiten, mehrere Parameter in Ibatis3 zu übergeben: Einer besteht darin, Java.map zu verwenden, und der andere ist die Verwendung von Javabäen.
Wenn nur ein Parameter an die Datei xxxmapper.xml übergeben wird, können Sie einfach "_parameter" verwenden, um die in xxxmapper.java übergebenen Parameter zu empfangen und sie beispielsweise in die Abfrage zu ersetzen:
(1) Das Folgende ist in der Datei xxxmapper.java definiert:
List <String> selectAlArPortCode (boolesche Mapping);
(2) Zu diesem Zeitpunkt können Sie "_parameter" verwenden, um diesen Parameter in der entsprechenden XXXMapper.xml -Datei zu empfangen:
<select id = "selectAlArportCode" resultType = "java.lang.String" ParameterType = "java.lang.boolean"> wählen Usr_air_line UnionElectrel_arrival_airport von usr_air_line UnionElectrel_arrival_airport von usr_air_line UnionElectrel_airport von usr_air_line UnionELectrel_arrival_airport von usr_air_line </if> </select>
Wenn jedoch mehrere Parameter in der Datei xxxmapper.java übergeben werden, kann das obige Formular nicht zum Empfangen von Parametern verwendet werden. Zu diesem Zeitpunkt gibt es zwei Lösungen, um dieses Problem zu lösen:
Geben Sie eine Map <String, Object> Collection in die XML -Datei über, und dann können die verschiedenen Parameter in der Kartensammlung normalerweise in der XML -Datei verwendet werden.
Spezifische Beispiele sind wie folgt:
(1) Das Folgende ist in der Datei xxxmapper.java definiert:
Liste <Airline> findAll (MAP <String, Objekt> Parme);
(2) Übergeben Sie die Parameter, um die oben definierte spezifische Implementierungsklasse zuzuordnen:
public List<Airline> findAll(PageInfo page,Airline airline) {HashMap<String,Object> params = new HashMap<String,Object>();params.put("page", page);params.put("airline", airline);return airlineMapper.findAll(params);}(3) Zu diesem Zeitpunkt verwendet die entsprechende xxxmapper.xml -Datei "java.util.map", um diese Kartensammlung zu erhalten:
<SQL ID = "SQLFileders"> <bind name = "förler" value = "#{'id': 'id', 'abgängereAirport': 'Abgusturport', 'reldepartureAirport': 'rel_departure_airport', 'AnkunftAirport': 'Arriva L_airport ',' relarrivalairport ':' rel_arrival_airport ',' popstatus ':' pop_status ',' status ':' status ',' creator ':' creator ',' createtime ':' create_time '}' /> <bind name = "javapropertys" value = "#{'id': 'id', 'abgänger_airport': 'abgängereAirport', 'rel_departure_airport': 'reldepartureAirport', 'arrival_airport': 'arr Ivalairport ',' rel_arrival_airport ':' relarrivalArport ',' pop_status ':' popstatus ',' Status ':' Status ',' Creator ':' Creator ',' create_time ':' Createtime '} " /> < /SQL> <select id = fandall" resultmap = "baserSultmap" parameterType = "java.util.map"> <! [cdata [select x.* aus (select z. #{airline = #{airline.reldepartureAirport} </if> <if test = "airline.relarrivalArport! #{airline.popstatus} </if> <if test = "airline.status! value = "#this.Fileders [page.sortname]"/> order von $ {orderfield} {page.sortorder} </if> <! [cdata [) z wobHINWEIS: Das obige Beispiel implementiert Pagination -Abfragedaten. Wir können feststellen, dass die Verwendung von MAP zum Übergeben von Parametern nicht gut ist, da dies in der Schnittstelle nur einen Kartenparameter gibt. Wenn andere es aufrechterhalten, sind sie sich nicht sicher, welche Parameter in diese Karte übergeben werden sollen.
2. Lösen Sie das Problem, indem Sie den Parametern @Param Annotation hinzufügen:
(1) Fügen Sie @Param Annotation zu den Parametern in der Methode der XXXMapper.java -Datei hinzu. Die Werte in dieser Annotation entsprechen dem in der XML -Datei verwendeten Parameternamen:
Airlines selectEffectiveAirlin (@param ("Abflughilfe") String Department Hairport,@Param ("ARAIRIVERAIRPORT") STRING ARIVIVERAIRAIRPORT,@Param ("Status") BigDecimal Status);(2) Zu diesem Zeitpunkt können die entsprechenden Stellen in der Datei xxxmapper.xml normalerweise in der @Param -Annotation verwendet werden:
<select id = "selecteffectiveAirline" resultMap = "BaseresultMap" parameterType = "java.util.map"> select <include refID = "Base_column_List" /> fromusr_air_line <Where> <if test = "ab null "> und avear_airport = #{aveRivalairport} </if> <if test =" status!Hinweis: Es ist zu beachten, dass die Parameter im IF -Bedingungsurteil unterschiedlich als die in SQL -Anweisungen geschrieben sind. Die Variablen im IF -Urteil werden nicht hinzugefügt #{}
Im Folgenden werde ich Ihnen zwei Methoden zur Übergabe mehrerer Parameter über MyBatis vorstellen
Die Karte übergibt mehrere Parameter
ParameterType kann ein Alias oder ein vollständig qualifizierter Name, eine Karte oder java.util.map sein, die beide in Ordnung sind.
<select id = "selectBlogByMap" parameterType = "map" resultType = "blog"> select t.id, t.title, t.content aus dem blog t wobei title = #{h_title} und t.content = #{h_content} </select public void void void void map () {SQLSession Session SQLSessionFactory.openSession (); Map <string, object> param = new HashMap <String, Object> (); param.put ("h_title", "oracle"); param.put ("H_Content", "Benutzersequenz"); Blog blog = (Blog) Sitzung.Selectone ("cn.enjoyLife.blogmapper.SelectBlogByMap", Param); Sitzung.CLOSE (); System.out.println ("Blog -Titel:"+blog.gettitle ()); } Mehrere Parameter über Javabäe übergeben
<select id = "selectBlogbyBean" parameterType = "blog" resultType = "blog"> select t.id, t.title, t.content aus Blog Twheret.title = #{title} und t.content = #{content} Blog blog = new Blog (); blog.settitle ("oracle"); blog.setContent ("Sequenz verwenden!"); Blog newblog = (Blog) Sitzung.Selectone ("cn.enoyLife.blogmapper.SelectBlogbyBean", Blog); Sitzung.CLOSE (); System.out.println ("neue Blog -ID:"+newblog.getId ()); }