1. 程式人生 > >ibatis動態引數和集合引數配置

ibatis動態引數和集合引數配置

iterate  // 此處必須要$,不能用#property<result property="" column=""/>    ibatis是輕量的ORM,類似於一個半自動化化資料操作框架。而hibernate是全自動的ORM。
    ibatis主要是讓實體類與資料庫的欄位名稱一一對應,然後在xml編寫操作資料庫的SQL語句。
    ibatis資料庫操作主要包括增刪查改。
   主要包括:一:在程式碼中:
                     通過sqlMapper.queryForList("sql_id",param),其中:sql_id就是我們在xml中編寫的sql語句id號(通過此id找到資料庫sql語句)

                     parm就是查詢條件引數值(一般是一個引數(也有兩個引數或者無引數)),引數值可以使物件,int或者String型別。
                二:在xml編寫sql語句,主要包括增刪查改
                    在寫sql語句前,可以做一些其他的簡單說明:比如,類別名(類似給類弄一個簡稱,方法類以後使用),實體類與資料欄位一一對應說明等等。
                    <sqlMap namespace="空間名稱">
                <typeAlias alias="teacher" type="com.wsw.ibatis.bean.Teacher"/>        
// 給類取一個別名,方便以後在後來使用。                 <resultMap class="" id="">                                                             // 給返回的類定一個id號,以後就可以直接用該id表示這個類                     <result property="屬性名" column="資料庫欄位名"/>                      // 返回的實體類的屬性與資料庫欄位匹配,兩者名稱可相同或者不同  <result property="屬性名" column="
 資料庫欄位名"/>                 </resultMap>                 <parameterMap class="" id="">                                                       // 引數類,用於執行sql的引數值,與上面的返回類不同。             <parameter property="屬性名" jdbcType="屬性型別"/>                                                         </parameterMap>                    </sqlMap>
                  還有就是: parameterClass 表示引數類,用於做引數值。
                                resultClass  表示返回值類,用於返回值。
                                在這種情況下 ,沒有把實體類屬性和資料庫的欄位一一寫出,表示實體類屬性和資料庫的欄位名稱和型別完全一致。
 ----------------------------------------------------------------------------------------------------------------------------                     (1):增:     <insert id="addTeacher" parameterClass="com.wsw.ibatis.bean.Teacher">                                            insert into teacher (id,username, age)values (#id#,#username#,#age#)  </insert>
                    (2):刪:  <delete id="deleteAccountById" parameterClass="String"> delete from teacher where id = #id# </delete>
                   (3):改:<update id="updateTeacher" parameterClass="com.wsw.ibatis.bean.Teacher"> update teacher set username=#username#,age= #age# where id=#id# </update>

                   (4):查:   <!-- 查詢某一條記錄 --> <select id="selectTeacherById" parameterClass="int" resultClass="com.wsw.ibatis.bean.Teacher">                             select * from teacher where id = #id# </select>                                       <!-- 查詢所有記錄 --> <select id="selectAllTeacher" resultClass="com.wsw.ibatis.bean.Teacher"> select * from teacher </select>
              ===============================================================================================
(5):動態按照條件查詢 (如果需要迴圈迭代,最好用list,不要用陣列)
<!-- 按照提交引數記錄 --> <select id="selectSomeTeacher" parameterClass="com.wsw.ibatis.bean.Teacher"                                                                   resultClass="com.wsw.ibatis.bean.Teacher" >                                             select * from teacher                                  <dynamic prepend="WHERE">               // 表示動態                               <isNotEmpty prepend="AND" property="username">        // isNotEmpty表示如果非空,property表示類屬性名                               <![CDATA[ username in ]]>        
<iterate conjunction="," open="(" close=")" property="username" >  // iterate 表示迭代                                             $usernames[]$              // 此處必須要$,不能用#  // 迭代必須是集合list 千萬不能  </iterate>                                                                                             //是陣列
                               <![CDATA[]]>                                                 </isNotEmpty> <isNotEmpty prepend="AND" property="age"> (age = #age#)                             // 此處最好用#,不要用$ </isNotEmpty> </dynamic> </select>