I've migrated my test case to Spring, and everything still works OK.  Here's my beans.xml:
 
<beans>
  <bean id="dataSource" class="com.ibatis.common.jdbc.SimpleDataSource">
    <constructor-arg>
      <map>
        <entry key="JDBC.Driver" value=" org.hsqldb.jdbcDriver"/>
        <entry key="JDBC.ConnectionURL" value="jdbc:hsqldb:mem:aname"/>
        <entry key="JDBC.Username" value="sa"/>
        <entry key=" JDBC.Password" value=""/>
        <entry key="JDBC.DefaultAutoCommit" value="false"/>
        <entry key="Pool.PingQuery" value="SELECT 1"/>
        <entry key=" Pool.PingEnabled" value="true"/>
        <entry key="Pool.PingConnectionsOlderThan" value="1000000"/>
      </map>
    </constructor-arg>
  </bean>

  <bean id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation">
      <value>classpath:test/sqlmap/TestSqlMapConfig.xml</value>
    </property>
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
  </bean>

  <bean id="animalDao" class="test.dao.AnimalDAOImpl">
    <property name="sqlMapClient">
      <ref bean="sqlMapClient"/>
    </property>
  </bean>
</beans>

My AnimalDAOImpl class extends Spring's SqlMapClientTemplate.  I'll send you the entire test case offline if you're interested.  It works with HSQLDB and is just a Java application (no web dependancies).
 
Jeff Butler


 
On 9/6/06, TNO <[EMAIL PROTECTED]> wrote:
I'm using Spring, Ibatis, and postgreSql 8.0
one project call XxxDAO which manage all the DAO (no transaction)
one project call XxxMgr which manage every transactions

So when I lauch my junit test on XxxDAO, there is no transaction manager, only a SimpleDataSource from Ibatis.
Here's the db config

<beans>
  <bean id="myPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>arc/constante/jdbc.properties</value>
      </list>
    </property>
  </bean>
  <bean id="dataSourceArc" class="com.ibatis.common.jdbc.SimpleDataSource ">
    <constructor-arg>
        <map>
            <entry key="JDBC.Driver" value="${jdbc.driverClassName}"/>
            <entry key="JDBC.ConnectionURL" value="${ jdbc.url}"/>
            <entry key="JDBC.Username" value="${jdbc.username}"/>
            <entry key="JDBC.Password" value="${jdbc.password}"/>
            <entry key=" JDBC.DefaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
            <entry key="Pool.PingQuery" value="SELECT 1"/>
            <entry key="Pool.PingEnabled" value="true"/>
            <entry key="Pool.PingConnectionsOlderThan" value="1000000"/>
        </map>
    </constructor-arg>
  </bean>

</beans>


Then, I have a big file sql-init-config.xml which contains all my alias for ibatis for each table
example :
  <typeAlias alias="plan" type="arc.db.model.Plan" />

  <resultMap id="planResult" class="plan">
    <result property="idPlan" column="plan_i_plan" />
    <result property="idMandat" column="plan_i_mandat" />
    <result property="infoAssedic" column="plan_t_info_assedic" />
    <result property="avisControlleur" column="plan_t_avis_controlleur" />
    <result property="avisRepresentantSalarie" column="plan_t_avis_representant_salarie" />
    <result property="garantie" column="plan_t_garantie" />
    <result property="remplacementDirigeant" column="plan_t_remplacement_dirigeant" />
    <result property="actifSituation" column="plan_t_actif_situation" />
    <result property="monCumulDeclaration" column="plan_m_cumul_declaration" />
    <result property="idPlanOptionDef" column="plan_i_plan_option_def" />
    <result property="idPlanOptionNon" column="plan_i_plan_option_non" />
    <result property="isPrivi" column="plan_b_privi" />
    <result property="isChiro" column="plan_b_chiro" />
    <result property="isConteste" column="plan_b_conteste" />
    <result property="isProvi" column="plan_b_provi" />
    <result property="isAechoir" column="plan_b_aechoir" />
    <result property="isValider" column="plan_b_valider" />
    <result property="dateProchaineEcheance" column="plan_d_prochaine_echeance" />
    <result property="isValidationEncours" column="plan_b_validation_encours" />
    <result property="isEcheancier" column="plan_b_echeancier" />
    <result property="isReprise" column="plan_b_reprise" />
  </resultMap>

  <sql id="planColonne">
    plan.i_plan AS plan_i_plan,
    plan.i_mandat AS plan_i_mandat,
    plan.t_info_assedic AS plan_t_info_assedic,
    plan.t_avis_controlleur AS plan_t_avis_controlleur,
    plan.t_avis_representant_salarie AS plan_t_avis_representant_salarie,
    plan.t_garantie AS plan_t_garantie,
    plan.t_remplacement_dirigeant AS plan_t_remplacement_dirigeant,
    plan.t_actif_situation AS plan_t_actif_situation,
    plan.m_cumul_declaration AS plan_m_cumul_declaration,
    plan.i_plan_option_def AS plan_i_plan_option_def,
    plan.i_plan_option_non AS plan_i_plan_option_non,
    plan.b_privi AS plan_b_privi,
    plan.b_chiro AS plan_b_chiro,
    plan.b_conteste AS plan_b_conteste,
    plan.b_provi AS plan_b_provi,
    plan.b_aechoir AS plan_b_aechoir,
    plan.b_valider AS plan_b_valider,
    plan.d_prochaine_echeance AS plan_d_prochaine_echeance,
    plan.b_validation_encours AS plan_b_validation_encours,
    plan.b_echeancier AS plan_b_echeancier,
    plan.b_reprise AS plan_b_reprise
  </sql>

  <sql id="getPlanSql">
    SELECT
    <include refid="planColonne"/>
    FROM plan
  </sql>

Then, one XxxSql.xml for each table which contains my failed query
<select id="getPlanOptionFromIdPlan" resultMap="planOptionResult">
    <include refid="getPlanOptionSql"/>
    WHERE plan_option.i_plan = #id#
  </select>
  <select id="getEcheanceOptionFromIdPlan" resultMap="echeanceOptionResult">
    <include refid="getEcheanceOptionSql"/>
    WHERE echeance_option.i_plan = #id#
  </select>
  <select id="getEcheancePlanFromIdPlan" resultMap="echeancePlanResult">
    <include refid="getEcheancePlanSql"/>
    WHERE echeance_plan.i_plan = #id#
  </select>

  <resultMap id="planResult1N" class="plan" extends="planResult">
    <result property="listEcheanceOption"
select="getEcheanceOptionFromIdPlan" column="plan_i_plan" />
    <result property="listEcheancePlan"
select="getEcheancePlanFromIdPlan" column="plan_i_plan" />
    <result property="listPlanOption" select="getPlanOptionFromIdPlan"
column="plan_i_plan" />
  </resultMap>

  <select id="getPlan1N" parameterClass="string" resultMap="planResult1N">
    <include refid="getPlanSql"/>
    $whereStr$
  </select>

All xml files are in the sqlMapConfig, but i don't have any transaction manager...
<sqlMapConfig>
  <sqlMap resource="arc/db/config/sql-init-config.xml"/>
  ...
  <sqlMap resource="arc/db/auto/dao/ibatis/config/PlanSQL.xml" />
   ...
</sqlMapConfig>


Then, In my Spring application-context, I have

<beans default-lazy-init="true">
  <bean id="sqlMapClientArcDb" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean ">
    <property name="configLocation">
      <value>classpath:arc/db/config/sql-map-config-arcdb.xml</value>
    </property>
  </bean>
...
  <bean id="planDAO" class=" arc.db.auto.dao.ibatis.PlanDAOiBatis" lazy-init="true">
    <property name="dataSource"><ref bean="dataSourceArc" /></property>
    <property name="sqlMapClient"><ref bean="sqlMapClientArcDb" /></property>
    <property name="sequenceDAO"><ref bean="sequenceDAO" /></property>
  </bean>
...


My TestPlanDAOIbatis is a reproductible test case with my own data...
I can give you everything if you want to reproduce it !

thanks, Tom

 

Reply via email to