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="空间名称">
(2):删: <delete id="deleteAccountById" parameterClass="String">
(3):改: <update id="updateTeacher" parameterClass="com.wsw.ibatis.bean.Teacher">
<!-- 按照提交参数记录 -->
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=" 数据库字段名"/>
<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">
还有就是: parameterClass 表示参数类,用于做参数值。
resultClass 表示返回值类,用于返回值。
在这种情况下 ,没有把实体类属性和数据库的字段一一写出,表示实体类属性和数据库的字段名称和类型完全一致。
----------------------------------------------------------------------------------------------------------------------------
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>