ibatis動態引數和集合引數配置
阿新 • • 發佈:2019-01-23
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>
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"/>
還有就是: 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>