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 表示参数类,用于做参数值。
parameterClass 表示返回值类,用于返回值。
在这种情况下 ,没有把实体类属性和数据库的字段一一写出,表示实体类属性和数据库的字段名称和类型完全一致。
----------------------------------------------------------------------------------------------------------------------------
(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>