PS: Ada dua cara untuk melewati beberapa parameter di IBATIS3: satu adalah menggunakan java.map, dan yang lainnya adalah menggunakan JavaBean.
Ketika hanya satu parameter yang diteruskan ke file xxxmapper.xml, Anda dapat menggunakan "_parameter" untuk menerima parameter yang dilewatkan di xxxmapper.java dan mengganti mereka ke dalam kueri, misalnya: misalnya:
(1) Berikut ini didefinisikan dalam file xxxmapper.java:
Daftar <String> SelectAlliRportCode (pemetaan boolean);
(2) Saat ini, Anda dapat menggunakan "_parameter" untuk menerima parameter ini dalam file xxxmapper.xml yang sesuai:
<Pilih ID = "SelectAllAirportCode" resultType = "java.lang.string" parameTerType = "java.lang.boolean"> pilih Departure_Airport dari USR_AIR_LINE SELECTARRIVAL_AIRPORT dari USR_AIR_LINE <if test = "_ parameter == true"> Union PILIH_AIRPORT DARI USR_AIR_LINE <if test = "_ parameter == true" Union> Union Rel_ARAIRPORT DARI PARAMETER_LINER_LINER_LINER_LINEREAR_LINE == true "> Union> Parameter dari USREAIR_LINEAR_LINER_LINER_LINER_LINER_LINE = Usr_air_line unionelectrel_arrival_airport dari usr_air_line unionelectrel_arrival_airport dari usr_air_line unionelectrel_airport dari usr_air_line unionelectrel_arrival_airport dari USR_AIR_LINE </if> </pilih>
Namun, jika beberapa parameter dilewatkan dalam file xxxmapper.java, formulir di atas tidak dapat digunakan untuk menerima parameter. Saat ini, ada dua solusi untuk menyelesaikan masalah ini:
Lewati koleksi peta <string, object> ke dalam file XML, dan kemudian berbagai parameter dalam koleksi peta dapat digunakan secara normal dalam file XML.
Contoh spesifik adalah sebagai berikut:
(1) Berikut ini didefinisikan dalam file xxxmapper.java:
Daftar <Sline> findAll (peta <String, Object> PARMS);
(2) Parameter lulus untuk memetakan di kelas implementasi spesifik yang ditentukan di atas:
Daftar Publik <IRLINE> FindAll (halaman HalamanInfo, maskapai penerbangan maskapai) {hashmap <string, objek> params = hashmap baru <string, object> (); params.put ("halaman", halaman); params.put ("maskapai", maskapai); return airlinemapper.findall (params);} piringan(3) Pada saat ini, file XXXMapper.xml yang sesuai menggunakan "java.util.map" untuk menerima koleksi peta ini:
<sql id = "sqlfileders"> <bind name = "FileDers" value = "#{'id': 'id', 'DeportureAirport': 'DEGECTURE_AIRPORT', 'RELDEPARTURURAIRPORT': 'REL_DEPARTURE_AIRPORT', 'ARRIBALAIRPORT': 'ARRIVA L_Airport ',' RelarrivalAirport ':' rel_arrival_airport ',' Popstatus ':' pop_status ',' status ':' status ',' pencipta ':' pencipta ',' createTime ':' create_time '} " /> <bind name = "javaPropertys" value = "#{'id': 'id', 'DEEGTURURE_AIRPORT': 'DEGECTURURAIRPORT', 'REL_DEPARTURE_AIRPORT': 'RELDEPARTURAARPORT', 'ATRIVAL_AIRPORT': 'arr ivalAirport ',' rel_arrival_airport ':' RelarrivalAirport ',' Pop_Status ':' Popstatus ',' Status ':' Status ',' Pencipta ':' Pencipta ',' Create_Time ':' CreateTime '} " /> < /sql> <pilih id =" findall "hasil" baser " /> </sql> <pilih id =" findall "hancur =" baser "BASER" BASER " ParameterType = "java.util.map"> <! [CDATA [SELECT x.* Dari (SELECT Z. #{Airline.DepartureAirport} </if> <if test = "Airline.arrivalAirport! = NULL"> dan kedatangan_Airport = #{Airline.arrivalAirport} </if> <if test = "Airline.RelDepartureAirport! = null"> dan rel_departure_Airor = #{Airine.RelDepartureAirport} </if> <if test = "Airline.RelarrivalAirport! = NULL"> dan rel_arrival_airport = #{Airline.RelarrivalAirport} </if> <if test = "Airline.popstatus! test = "Airline.Status! = Null"> dan Status = #{Airline.Status} < /if> < /where> <if test = "page.sortname! = null"> <Sertakan refid = "sqlfileders" /> <bind name = "orderfield" value = " #this.fileDers [page.sortn [sortn name =" ordfield "value =" #this.fileDers [page.sortn [sortner name = "oDerfield /{{{oDerfield {{oDerfield {{oDerFIDE /FORDERField {{{o.sort {{oDFIDEDERS =" $ {page.sortorder} </if> <! [cdata [) z di mana rownum <]]>#{page.to} <! [cdata [) x di mana x.numbers> =]]>#{page.from} </pilih>Catatan: Contoh di atas mengimplementasikan data kueri pagination. Kita dapat menemukan bahwa menggunakan peta untuk meneruskan parameter tidak baik, karena ini memungkinkan bahwa hanya ada satu parameter peta di antarmuka. Ketika orang lain memeliharanya, mereka tidak yakin parameter apa yang harus diteruskan ke peta ini.
2. Selesaikan masalah dengan menambahkan anotasi @param ke parameter:
(1) Tambahkan anotasi @param ke parameter dalam metode file xxxmapper.java. Nilai -nilai dalam anotasi ini sesuai dengan nama parameter yang digunakan dalam file XML:
Airlines SelectEffectiveAlline (@param ("DeportureAirport") String DepartmentAirport,@param ("kedatangan") String kedatangan,@param ("status") status BigDecimal);(2) Pada saat ini, tempat yang sesuai di file xxxmapper.xml dapat digunakan secara normal dalam anotasi @param:
<select id="selectEffectiveAirline" resultMap="BaseResultMap" parameterType="java.util.Map">select<include refid="Base_Column_List" />fromUSR_AIR_LINE<where><if test="departureAirport != null">DEPARTURE_AIRPORT = #{departureAirport}</if><if test="arrivalAirport != null "> dan kedatangan_Airport = #{kedatangan APRTI} </if> <if test =" status! = null "> dan status = #{status} </if> </where> </ pilih>Catatan: Perlu dicatat bahwa parameter dalam penilaian IF kondisi ditulis secara berbeda dari yang ada dalam pernyataan SQL. Variabel dalam penilaian IF tidak ditambahkan #{}
Di bawah ini saya akan memperkenalkan kepada Anda dua metode untuk melewati beberapa parameter melalui mybatis
Peta melewati beberapa parameter
ParameterType dapat berupa alias atau nama, peta atau java.util.map yang sepenuhnya memenuhi syarat, keduanya ok.
<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 (); Peta <string, object> param = hashmap baru <string, object> (); param.put ("h_title", "oracle"); param.put ("h_content", "urutan pengguna"); Blog blog = (blog) session.selectone ("cn.enjoylife.blogmapper.selectblogbymap", param); session.close (); System.out.println ("Judul Blog:"+Blog.gettitle ()); } Melewati beberapa parameter melalui Javabean
<Pilih id = "selectblogbyBean" parameTerType = "blog" resultType = "blog"> pilih t.id, t.title, t.content dari blog twheret.title = #{title} dan t.content = #{content} </ pilih public void testSelectByBean () {sql; sqlacession = sql.aPlAcression = sql. Blog blog = blog baru (); blog.settitle ("oracle"); blog.setContent ("Gunakan urutan!"); Blog newBlog = (blog) session.selectone ("cn.enjoylife.blogmapper.selectblogbybean", blog); session.close (); System.out.println ("ID blog baru:"+newBlog.getId ()); }