ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Brown <dbr...@sexingtechnologies.com>
Subject Re: JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?
Date Mon, 06 Jul 2009 16:24:34 GMT
Hello Steven, thanks for the reply. I am running MySql. At the mysql prompt a: select @@autocommit
displays a 1. And, the show variables displays: autocommit as ON. In my applicationContext.xml
the bean property: defaultAutocommit = true. The various gory xml configs and source code
follows. Only the transactions do not work. All query testcases pass. Thanks and please advise,
David.



*********************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <!-- Configurer that replaces ${...} placeholders with values from a properties file
-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    
    <!-- Enable @Transactional support -->
    <tx:annotation-driven/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driverClass}"/>
        <property name="url" value="${databaseURL}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <property name="maxActive" value="30"/>
        <property name="maxIdle" value="10"/>
        <property name="maxWait" value="1000"/>
        <property name="defaultAutoCommit" value="true"/>
    </bean>

    <!-- Transaction manager for iBATIS DAOs -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- SqlMap setup for iBATIS Database Layer -->
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:sqlMap-config.xml"/>
    </bean>

	<bean class="com.sexingtechnologies.st.dao.BullmasterDaoIbatis" >
		<property name="sqlMapClient" ref="sqlMapClient"/>
	</bean>

	<bean class="com.sexingtechnologies.st.dao.AnimalmasterDaoIbatis" >
		<property name="sqlMapClient" ref="sqlMapClient"/>
	</bean>

</beans>
*********************************************************************************


*********************************************************************************
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"
>
<sqlMap namespace="animalmaster" >
  <typeAlias alias="animalmaster" type="com.sexingtechnologies.st.data.Animalmaster" />
  <resultMap id="animalmaster_ResultMap" class="animalmaster" >
    <result column="_class" 		property="_class" 			jdbcType="CHAR" />
    <result column="animalId" 		property="animalId" 		jdbcType="LONG" />
    <result column="AnimalBreedId" 	property="animalBreedId" 	jdbcType="LONG" />
  </resultMap>

  <sql id="animalid_Where_Clause" >
  		where animalid = #animalId:LONG#
  </sql>

  <sql id="class_value_Where_Clause" >
  		where _class = #_class:CHAR#
  </sql>
 
  <sql id="AnimalBreedId_value_Where_Clause" >
  		where AnimalBreedId = #AnimalBreedId:LONG#
  </sql>

  <select id="selectAll" resultMap="animalmaster_ResultMap" parameterClass="animalmaster"
>
    <!--
      Select all records
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
  </select>

  <select id="selectByPrimaryKey" resultMap="animalmaster_ResultMap" parameterClass="java.lang.Long"
>
    <!--
      Select by primary key
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
    <isParameterPresent >
      <include refid="animalmaster.animalid_Where_Clause" />
    </isParameterPresent>
  </select>
  
  <select id="selectByPrimaryKeyAndClass" resultMap="animalmaster_ResultMap" parameterClass="java.lang.Long"
>
    <!--
      Select by primary key
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </select>

  <delete id="deleteByPrimaryKey" parameterClass="java.lang.Long" >
    <!--
      Delete by primary key
    -->
    delete from animalmaster
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </delete>
  
  <delete id="deleteByAnimalBreedId" parameterClass="animalmaster" >
    <!--
      Delete by AnimalBreedId where clause
    -->
    delete from animalmaster
    <include refid="animalmaster.AnimalBreedId_value_Where_Clause" />
  </delete>
  
  <insert id="insert" parameterClass="animalmaster" >
    <!--
      Insert using values
    -->
    insert into animalmaster (_class, animalId, AnimalBreedId)
    values (#_class:CHAR#, #animalId:LONG#, #animalBreedId:LONG#)
  </insert>
  
  <insert id="insertSelective" parameterClass="animalmaster" >
    <!--
      Selective insert
    -->
    insert into animalmaster
    <dynamic prepend="(" >
      <isNotNull prepend="," property="_class" >
        _class
      </isNotNull>
      <isNotNull prepend="," property="animalId" >
        animalId
      </isNotNull>
      <isNotNull prepend="," property="animalBreedId" >
        AnimalBreedId
      </isNotNull>
      )
    </dynamic>
    values
    <dynamic prepend="(" >
      <isNotNull prepend="," property="_class" >
        #_class:CHAR#
      </isNotNull>
      <isNotNull prepend="," property="animalId" >
        #animalId:LONG#
      </isNotNull>
      <isNotNull prepend="," property="animalBreedId" >
        #animalBreedId:LONG#
      </isNotNull>
      )
    </dynamic>
  </insert>

  <select id="countByAnimalBreedId" resultClass="java.lang.Integer" >
    <!--
      Count all records against AnimalBreedId where clause
    -->
    select count(*) from animalmaster
    <include refid="animalmaster.AnimalBreedId_value_Where_Clause" />
  </select>
  
  <select id="countAllRecs" resultClass="java.lang.Integer">
  		<!--
			Count all records
		-->
		select count(*) from animalmaster
  </select>

  <update id="updateByAnimalId" >
    <!--
      Update by animal ID
    -->
    update animalmaster
    <dynamic prepend="set" >
      <isNotNull prepend="," property="record._class" >
        _class = #record._class:CHAR#
      </isNotNull>
      <isNotNull prepend="," property="record.animalId" >
        animalId = #record.animalId:LONG#
      </isNotNull>
      <isNotNull prepend="," property="record.animalBreedId" >
        AnimalBreedId = #record.animalBreedId:LONG#
      </isNotNull>
    </dynamic>
    <isParameterPresent >
      <include refid="animalmaster.animalid_Where_Clause" />
    </isParameterPresent>
  </update>

  <update id="updateByClass" >
    <!--
      Update by _class value
    -->
    update animalmaster
    set _class = #record._class:CHAR#,
      animalId = #record.animalId:LONG#,
      AnimalBreedId = #record.animalBreedId:LONG#
    <isParameterPresent >
      <include refid="animalmaster.class_value_Where_Clause" />
    </isParameterPresent>
  </update>

  <update id="updateByPrimaryKey" parameterClass="animalmaster" >
    <!--
      Update by primary key (same as animal ID above maybe needs to changed.)
    -->
    update animalmaster
    <dynamic prepend="set" >
      <isNotNull prepend="," property="animalBreedId" >
        AnimalBreedId = #animalBreedId:LONG#
      </isNotNull>
    </dynamic>
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </update>

  <update id="updateByPrimaryKeyAndClassValue" parameterClass="animalmaster" >
    <!--
      Update by animal ID primary key and _class value where clause
    -->
    update animalmaster
    set AnimalBreedId = #animalBreedId:LONG#
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </update>
</sqlMap>
*********************************************************************************


*********************************************************************************
Two transactions that do nothing
*********************************************************************************
        @Rollback @Transactional @Test
	public void testInsertAnimals() {
		animalMaster = new Animalmaster();
		animalMaster.setAnimalBreedId((long)104);
		animalMaster.setAnimalId((long)0);
		animalMaster.set_class("mammalia");
		animalmasterDao.insert(animalMaster);
	}

	@Rollback @Transactional @Test
	public void testUpdateAnimals() {

		animalMaster = new Animalmaster();
		animalMaster.setAnimalId((long)2881);
		animalMaster.set_class("mammalia");
		animalMaster.setAnimalBreedId((long)89);

		animalmasterDao.update(animalMaster);

		animalMaster = animalmasterDao.selectByPrimaryKey((long)2881);

		assertNotNull(animalMaster);

		assertEquals((long)2881, (long)animalMaster.getAnimalId());
		assertEquals("mammalia", animalMaster.get_class());
		assertEquals((long)89, (long)animalMaster.getAnimalBreedId());
	}
*********************************************************************************




----- Original Message -----
From: "Steven A" <traderj133t@gmail.com>
To: user-java@ibatis.apache.org
Cc: "larry meadors" <larry.meadors@gmail.com>
Sent: Monday, July 6, 2009 10:44:25 AM GMT -06:00 US/Canada Central
Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a  mystery?

David,

Rather than have us guess at your problem, be a little more helpful and post
some code, as well as your configuration.

Try setting jdbc autocommit to true.  That should clear up your problem....



On Mon, Jul 6, 2009 at 7:21 AM, David Brown
<dbrown@sexingtechnologies.com>wrote:

> Hello Larry, thanks for the speedy reply. I am not a long time iBatis user
> and therefore lack considerable background. Notwithstanding, I am not sure
> of your reply: Transactions? On the software side I have the non-query
> testcases annotated: @Transactional. On the database side I am using the
> MySql transactional engine: innodb. I have studied the output of the MySql
> command: show innodb status but nothing under transactions or the queries
> categories shows anything of interest. Please try to be more specific for
> the uninitiated.
>
> Regards, David.
>
>
>
> ----- Original Message -----
> From: "Larry Meadors" <larry.meadors@gmail.com>
> To: user-java@ibatis.apache.org
> Sent: Sunday, July 5, 2009 10:49:15 PM GMT -06:00 US/Canada Central
> Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a
>  mystery?
>
> Transactions? That's my guess.
>
> Larry
>
>
> On Sun, Jul 5, 2009 at 7:51 PM, David
> Brown<dbrown@sexingtechnologies.com> wrote:
> > Hello iBatis dev, gurus, users and mortals, I have a very curious
> situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries
> are some form of select against a where clause and an Integer ID and the
> same as: select count(*) where ... The asserts for all the queries pass. On
> the other hand the non-queries: 1 insert and 1 update don't fail either but
> inspection of the database records show no change. Any ideas on how to
> diagnose please advise, David.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> > For additional commands, e-mail: user-java-help@ibatis.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Mime
View raw message