ibatis配置及应用

    技术2026-04-08  1

    1、在spring启动配置文件中加iBatis对应Bean <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  <property name="configLocations" >     <list>           <value>classpath:/config/xml/common/sqlMapConfig_db2.xml</value>           <value>classpath:/config/xml/biz/sqlMapConfig_db2.xml</value>        </list>  </property>  <property name="dataSource" ref="dataSource" /> </bean>2、设置sqlMapConfig 找到sqlMapConfig.xml文件,增加一个<sqlMap resource=""/>记录sqlMap 对应文件 <sqlMapConfig>  <settings useStatementNamespaces="true" />  <sqlMap resource="bc/tbm/maintenance/model/BudgetDept.db2.xml" /> </sqlMapConfig>

    3、设置sqlMap<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd" ><sqlMap namespace="ProjectVise">    <typeAlias type="bc.tbm.project.model.Project" alias="project" />     // 设置对象别名        <resultMap id="viseProjectResult" class="project">   // 返回结果bean。class为别名或对象完整名称,        <result property="prjId" column="PRJID" />       // property="prjId"  对象属性,column="PRJID" 结果集对应列        <result property="prjName" column="PRJNAME" />        <result property="prjCode" column="PRJCODE" />        <result property="directorDeptId" column="DPTID" />        <result property="directorDeptName" column="DPTNAME" />        <result property="totalMoney" column="TOTALMONEY" />        <result property="projectMoney" column="PROJECTMONEY" />    </resultMap>        // 查询,返回简单结果集    <select id="getViseObjectCount" parameterClass="Map" resultClass="int"> // resultClass或使用 resultMap="viseObjectResult"  SELECT COUNT(*) FROM TBM_PRJVISE VS   LEFT JOIN BAS_DPT BD ON BD.DPTID = VS.DPTID  LEFT JOIN BAS_USERINFO U ON U.USERID = VS.PROPOSERID      <dynamic prepend="WHERE">        //  根据参数判断是否加“where”        <isNotNull property="state">                       // 参数state不为null                <isNotEqual prepend="AND" property="state" compareValue="-1">   // 参数state 不等于compareValue的值时                    VS.STATE = $state$       // prepend="AND" 加“AND” 再加下面的语句             </isNotEqual>            </isNotNull>            <isNotNull property="property_class">                <isEqual property="property_class" compareValue="1">                    <isNotEmpty prepend="AND" property="property_value">                    <![CDATA[UPPER(VS.CODE) LIKE UPPER('%$property_value$%')]]>  // <![CDATA[.....]]>  xml中数据处理,不通过xml编译                    </isNotEmpty>                </isEqual>                <isEqual property="property_class" compareValue="2">                    <isNotEmpty prepend="AND" property="property_value">                    <![CDATA[UPPER(VS.NAME) LIKE UPPER('%$property_value$%')]]>                    </isNotEmpty>                </isEqual>            </isNotNull>         </dynamic>      </select>             // 新增处理    <insert id="insertProjectRelationShip" parameterClass="projectRelationShip">        insert into TBM_PRJRELATIONSHIP (PRJID, ACTID, RELPRJID, RELDPTID, RELACTID, DATATYPE, DATEFLAG, OCCUPYAMOUNT) values        (#projectId#, #activityId#, #relProjectId#, #relDeptId#, #relActivityId#, #dataType#, #dateflag#, #occupyAmount#)    </insert>     // 修改       <update id="updateBudgetDataItem"  parameterClass="Map">        UPDATE TBM_PRJDATA SET ITEMID=#itemId# WHERE PRJID = #prjId# AND OBJECTID = #actId# AND DATATYPE = #dType#    </update>      // 删除    <delete id="deleteProjectRelationShip" parameterClass="projectRelationShip">        delete from TBM_PRJRELATIONSHIP a        <dynamic prepend="where">            <isNotNull property="projectId" prepend="AND">                a.PRJID = $projectId$            </isNotNull>        </dynamic>    </delete>     // 4、Dao处理public class ViseDaoImpl extends SqlMapClientDaoSupport implements ViseDao { 继承SqlMapClientDaoSupport类  private SqlMapClientTemplate sqlMapClientTemplate;  // 创建SqlMapClientTemplate对象

     public ViseDaoImpl() {  this.sqlMapClientTemplate = this.getSqlMapClientTemplate(); }   查询调用  if (limit > 0) {   viseList = sqlMapClientTemplate.queryForList("ProjectVise.getViseObject",params, start, limit);  } else {   viseList = sqlMapClientTemplate.queryForList("ProjectVise.getViseObject",params);  }   批量处理 public int deleteProjectRelationships(final List<ProjectRelationShip> relationships) {  return (Integer) this.sqlMapClientTemplate.execute(new SqlMapClientCallback() {     public Object doInSqlMapClient(SqlMapExecutor executor)      throws SQLException {     executor.startBatch();     for(ProjectRelationShip relationship : relationships) {      executor.delete("NewProject.deleteProjectRelationShip", relationship);     }     return executor.executeBatch();    }  }); }

    最新回复(0)