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(); } }); }
