zoukankan      html  css  js  c++  java
  • Spring提供的iBatis的SqlMap配置

    1.    applicationContext.xml

    <!-- Spring提供的iBatis的SqlMap配置-->

        <bean id="sqlMapClient" class="com.ks.tjrw.jl.dao.impl.ibatis.KSSqlMapClientFactoryBean">

            <property name="configLocation" value="classpath:SqlMapConfig.xml" />

            <property name="dataSource" ref="dataSource" />

    </bean>

    2.  SqlMapConfig.xml

     

    <?xml version="1.0" encoding="UTF-8" ?>

     

    <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"

        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

     

    <sqlMapConfig>

        <properties resource="db.properties" />

        <settings cacheModelsEnabled="true" enhancementEnabled="true"

           lazyLoadingEnabled="true" maxRequests="64" maxSessions="20"

           maxTransactions="20" useStatementNamespaces="false" />

     

        <sqlMap resource="com/ks/tjrw/jl/sqlFile/Pdgxxt.xml" />

        <sqlMap resource="com/ks/tjrw/jl/sqlFile/Pdxljdjxjyjl.xml" />

        <sqlMap resource="com/ks/tjrw/jl/sqlFile/Zmqfh.xml" />

        <sqlMap resource="com/ks/tjrw/jl/sqlFile/ZmqfhSub.xml" />

        <sqlMap resource="com/ks/tjrw/jl/sqlFile/Clhzlx.xml" />

    </sqlMapConfig>

    3.列举其中一个

    com/ks/tjrw/jl/sqlFile/Pdgxxt.xml

     

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >

    <sqlMap namespace="Pdgxxt">

        <typeAlias alias="Pdgxxt" type="com.ks.tjrw.jl.model.Pdgxxt" />

        <resultMap id="get-PdxSub-result" class="com.ks.tjrw.jl.model.Pdgxxt">

           <result property="powerNo" column="POWER_DISTRIBUTION_NO"/>

           <result property="name" column="NAME"/>

           <result property="number" column="NUMBER"/>

           <result property="linkAmount" column="LINK_AMOUNT"/>

           <result property="linkSituation" column="LINK_SITUATION"/>

           <result property="verity" column="VERITY_SITUATION"/>

           <result property="createTime" column="CREATE_TIME"/>

           <result property="lineNo" column="LINE_CHECK_NO"/>

        </resultMap>

       

        <select id="findPdxSubByPk" parameterClass="Pdgxxt" resultClass="Pdgxxt" resultMap="get-PdxSub-result">

           select * from JL_PDXLJDJXJYJL_PDGXXT where POWER_DISTRIBUTION_NO=#powerNo#

        </select>

       

        <!-- 查询配电线路接地、接线检验记录_配电干线表实体 -->

        <select id="getPdg" resultClass="Pdgxxt" parameterClass="java.lang.String" resultMap="get-PdxSub-result">

           select * from JL_PDXLJDJXJYJL_PDGXXT where 1=1

           <dynamic>

               <isNotEmpty  prepend="and">

                  LINE_CHECK_NO=#lineNo#

               </isNotEmpty> 

           </dynamic>

        </select>

       

     

        <!-- 插入配电线路接地、接线检验记录_配电干线表实体 -->

        <insert id="insertPdg" parameterClass="Pdgxxt">

           insert into JL_PDXLJDJXJYJL_PDGXXT(POWER_DISTRIBUTION_NO)

           values (#powerNo#)

        </insert> 

       

        <!-- 修改配电线路接地、接线检验记录_配电干线表实体 -->

        <update id="updatePdg" parameterClass="Pdgxxt">

           update JL_PDXLJDJXJYJL_PDGXXT set POWER_DISTRIBUTION_NO=#powerNo#

           <dynamic>

               <isNotNull  prepend="," property="lineNo">

                  LINE_CHECK_NO=#lineNo#

               </isNotNull> 

               <isNotNull  prepend="," property="name">

                  "NAME"=#name#

               </isNotNull> 

               <isNotNull  prepend="," property="number">

                  "NUMBER"=#number#

               </isNotNull> 

               <isNotNull  prepend="," property="linkAmount">

                  LINK_AMOUNT=#linkAmount#

               </isNotNull> 

               <isNotNull  prepend="," property="linkSituation">

                  LINK_SITUATION=#linkSituation#

               </isNotNull> 

               <isNotNull  prepend="," property="verity">

                  VERITY_SITUATION=#verity#

               </isNotNull> 

               <isNotNull  prepend="," property="createTime">

                  CREATE_TIME=#createTime#

               </isNotNull>  

           </dynamic>   

               where POWER_DISTRIBUTION_NO=#powerNo#

        </update>

     

        <!-- 删除配电线路接地、接线检验记录_配电干线表实体 -->

        <delete id="deletePdg" parameterClass="java.util.List">

           delete JL_PDXLJDJXJYJL_PDGXXT

            <iterate prepend="WHERE"  open="(" close=")"

              conjunction="OR">

              LINE_CHECK_NO=#matList[]#

            </iterate>

        </delete>

        <delete id="deletePdxSubByCondition" parameterClass="java.lang.String">

           delete from JL_PDXLJDJXJYJL_PDGXXT where LINE_CHECK_NO=#lineNo#

        </delete>

       

    </sqlMap>

    4.对应的action

    PdxAction---》列举edit方法

    public String editPdx(){

           pdxSubList = pdxSubService.findPdxs(pdx.getLineCheckNo());

           pdx = pdxDao.findPdxByNo(pdx);

           return newpath("/tjrw/jl/pdx.jsp");

        }

     

    5.

    @Repository("PdxljdjxjyjlDaoImpl")

    public class PdxljdjxjyjlDaoImpl extends BaseDaoiBatis<Pdxljdjxjyjl> implements PdxljdjxjyjlDao {

     

        public List<Pdxljdjxjyjl> findPdxByQuery(Object obj, Pagination p) {

           return queryForList("getPdx",obj,p);

        }

       

        public boolean insertPdx(Pdxljdjxjyjl pdx) {

          

           return insert("insertPdx",pdx);

        }

        public boolean updatePdx(Pdxljdjxjyjl pdx) {

          

           return update("updatePdx",pdx);

        }

        public boolean deletePdx(List<String> pkList) {

          

           return delete("deletePdx",pkList);

        }

        public long getAllCounts(){

           return getObjectTotal("getPdx");

        }

     

        public long getAllCounts(Object obj){

           return getObjectTotal("getPdx",obj);

        }

        public Pdxljdjxjyjl findPdxByNo(Pdxljdjxjyjl pdx){

         return (Pdxljdjxjyjl) queryForObject("findPdxByPk",pdx);

      }

    }

     

     

     

     

    /**

     *

     * 类说明:数据操作基类,实现了物理分页查询,增,删,改等基本功能

     * 作者:lf

     * 创建时间:2011-4-4 下午04:59:48

     */

    public class BaseDaoiBatis<T> {

       

        private Logger logger = null;

        @Resource(name="sqlMapClient")

        private SqlMapClient sqlMapper = null;

       

        public BaseDaoiBatis(){

           getLogger();     

        }

       

        public SqlMapClient getSqlMapper() {

           return sqlMapper;

        }

       

        public void setSqlMapper(SqlMapClient sqlMapper) {

           this.sqlMapper = sqlMapper;

        }

     

        protected Logger getLogger() {

          

           if (null == logger) {

               logger = Logger.getLogger(getClass().getName());

           }

           return logger;

        }

       

        /**

         * 根据传入的sqlId创建查询总记录数的count sqlId

         * 创建CountStatement,并将其添加到MapStatement(HashMap)中

         */

        private void prepareCountQuery(String sqlId) {

          

           //将传入的sqlId转换为__sqlId__Count__

           String countQuery = CountStatementUtil.getCountStatementId(sqlId);

          

           if (logger.isDebugEnabled()) {

               logger.debug("Convert " + sqlId + " to " + countQuery);

           }

          

           if (sqlMapper instanceof SqlMapClientImpl) {

               SqlMapExecutorDelegate delegate = ((SqlMapClientImpl) sqlMapper).getDelegate();

              

               try {

                  delegate.getMappedStatement(countQuery);

               }catch (SqlMapException e) {

                  delegate.addMappedStatement(CountStatementUtil.

                         createCountStatement(delegate.getMappedStatement(sqlId)));

               }

           }

        }

       

        /**

         * 根据传入的sqlId和对象参数,查询满足条件的总记录条数

         */

        public long getObjectTotal(String sqlId, Object parameterObject) {

          

           long count = 0l;

           prepareCountQuery(sqlId); //创建CountStatement,并将其添加到MapStatement(HashMap)中

          

           try {

               count = (Long) sqlMapper.queryForObject(

                      CountStatementUtil.getCountStatementId(sqlId),

                                                         parameterObject);

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return count;

        }

       

        /**

         * 根据传入的sqlId查询满足条件的总记录条数

         */

        public long getObjectTotal(String sqlId) {

          

           long count = 0l;    

           prepareCountQuery(sqlId); //创建CountStatement,并将其添加到MapStatement(HashMap)中

          

           try {

               count = (Long) sqlMapper.queryForObject(

                                    CountStatementUtil.getCountStatementId(sqlId));

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return count;

        }

       

        /**

         * 根据传入的sqlId查询数据库

         */

        public T queryForObject(String sqlId) {

           T results = null;

           try {

               results = (T) sqlMapper.queryForObject(sqlId);

           } catch (SQLException e) {

               printErrorInfo(e);

           }

           return results;

        }

     

        /**

         * 根据传入的sqlId,和对象参数parameterObject查询数据库

         */

        public T queryForObject(String sqlId, Object parameterObject) {

           T results = null;

           try {

               results = (T) sqlMapper.queryForObject(sqlId, parameterObject);

           } catch (SQLException e) {

               printErrorInfo(e);

           }

           return results;

        }

       

        /**

         * 使用sql语句查询列表,返回List集合

         * 待执行的sql查询语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可

         */

        public List<T> queryForList(String sqlId) {

           List<T> results = null;

          

           try {

               results = sqlMapper.queryForList(sqlId);

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return results;

        }

     

        public List<T> queryForList(String sqlId, Object parameterObject) {

           List<T> results = null;

          

           try {

               results = sqlMapper.queryForList(sqlId, parameterObject);

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return results;

        }

       

        /**

         * 功能说明:分页查询

         * @param sqlId sql查询语句

         * @param pagination.getCurrentPage() 起始页面

         * @param pagination.getPageSize() 每页的记录条数

         * @return

         */

        public List<T> queryForList(String sqlId,Pagination pagination) {

          

           List<T> results = null;

          

           try {

               results = sqlMapper.queryForList(sqlId,

                      pagination.getCurrentPage(), pagination.getPageSize());

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return results;

        }

       

        public List<T> queryForList(String sqlId, Object parameterObject,Pagination pagination) {

          

           List<T> results = null;

          

           try {

               results = sqlMapper.queryForList(sqlId, parameterObject,

                      pagination.getCurrentPage(),pagination.getPageSize());

              

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return results;

        }

       

        /**

         * 向数据库执行插入操作 

         *

         * @param sqlId   待执行的sql插入操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可

         * @param parameterObject 待插入的对象

         * @return 在配置文件中配置<selectKey>

         */

        public boolean insert(String sqlId, Object parameterObject) {

          

           try {

               sqlMapper.insert(sqlId, parameterObject);

              

           } catch (SQLException e) {        

               printErrorInfo(e);

               return false;

           }

          

           return true;

        }

     

        /**

         * 向数据库执行插入操作,并返回配置文件中<selectKey>所返回的值

         *

         * @param sqlId

         * @param parameterObject

         * @return

         */

        public int insertAndReturnPK(String sqlId, Object parameterObject) {     

           int returnValue = 0;

          

           try {

               returnValue = Integer.parseInt(sqlMapper.insert(sqlId,

                                           parameterObject).toString());

           } catch (SQLException e) {

               printErrorInfo(e);

           }

          

           return returnValue;

        }

     

        /**

         * 向数据库执行修改操作

         *

         * @param sqlId   待执行的sql修改操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可

         * @param parameterObject  待修改的对象

         * @return

         */

        public boolean update(String sqlId, Object parameterObject) {

          

           try {

               sqlMapper.update(sqlId, parameterObject);

              

           } catch (SQLException e) {

               printErrorInfo(e);         

               return false;

           }

           return true;

        }

     

        /**

         * 向数据库执行删除操作

         *

         * @param sqlId

         *            待执行的sql删除操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可

         * @param parameterObject

         *            待删除的对象

         */

        public boolean delete(String sqlId, Object parameterObject) {

          

           try {

               sqlMapper.delete(sqlId, parameterObject);

              

           } catch (SQLException e) {

               printErrorInfo(e);

               return false;

           }

           return true;

        }

       

        /**

         * 打印错误信息,以便于调试

         */

        private void printErrorInfo(SQLException e) {

          

           logger.error("error in class " + this.getClass() + ":" + e.toString()

                  + ",caused by:" + e.getCause()+ ",more information:" + e.getMessage());

        }

       

    }

     

  • 相关阅读:
    WPF 自适应布局控件
    c# 将Datarow转成Datarowview
    C# 全局Hook在xp上不回调
    WPF datagrid AutoGenerateColumns隐藏部分列
    WPF wpf中按钮操作权限控制
    C# autofac配置文件中设置单例
    Castle ActiveRecord 二级缓存使用 异常记录
    VS2013 抛出 stackoverflow exception 的追踪
    CastleActiveRecord在多线程 事务提交时数据库资源竞争导致更新失败的测试结果记录
    WF4.0 工作流设计器 传入参数问题记录?
  • 原文地址:https://www.cnblogs.com/wangliansong/p/3277506.html
Copyright © 2011-2022 走看看