ibatis动态参数和集合参数配置

来源:互联网 发布:易语言游戏辅助源码 编辑:程序博客网 时间:2024/06/05 17:51
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>
0 0
原创粉丝点击