ibatis動態參數和集合參數配置
iterateibatis主要是讓實體類與數據庫的字段名稱一一對應,然后在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=" 數據庫字段名"/>
<result property="屬性名" column=" 數據庫字段名"/>
</resultMap>
<parameterMap class="" id=""> // 參數類,用于執行sql的參數值,與上面的返回類不同。
<parameter property="屬性名" jdbcType="屬性類型"/>
</parameterMap>
</sqlMap>
還有就是: parameterClass 表示參數類,用于做參數值。
parameterClass 表示返回值類,用于返回值。
在這種情況下 ,沒有把實體類屬性和數據庫的字段一一寫出,表示實體類屬性和數據庫的字段名稱和類型完全一致。
----------------------------------------------------------------------------------------------------------------------------
(1):增: <insert id="addTeacher" parameterClass="com.wsw.ibatis.bean.Teacher">還有就是: parameterClass 表示參數類,用于做參數值。
parameterClass 表示返回值類,用于返回值。
在這種情況下 ,沒有把實體類屬性和數據庫的字段一一寫出,表示實體類屬性和數據庫的字段名稱和類型完全一致。
----------------------------------------------------------------------------------------------------------------------------
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):查: <!-- 查找某一條記錄 -->
(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 表示迭代
<iterate conjunction="," open="(" close=")" property="username" > // iterate 表示迭代
$usernames[]$ // 此處必須要$,不能用# // 迭代必須是集合list ,千萬不能
</iterate> //是數組
<![CDATA[]]>
</isNotEmpty>
<isNotEmpty prepend="AND" property="age">
(age = #age#)
// 此處最好用#,不要用$
</isNotEmpty>
</dynamic>
</select>