Hi, Awesome product renovation.
Heres some things I found that might have already been discussed: 1) http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd Getting error if I try to add either <typeAliases> or <typeAlias> in a mapper xml file. Works only in a Configuration.xml file. 2) session.select I am able to invoke the three param .select(arg0, arg1, arg2) but not .select(id, param). The id/param select isn't available. There is no examples in the pdf on how to use the three param select. 3) Is there anyway we can keep the colon syntax for defining jdbcType. It could be in addition to the comma seperated diffinations. Just looks cleaner and is much shorter: e.g. #{timeZone,jdbcType=VARCHAR} vs #{timeZone:VARCHAR} e.g. count != #{usercount,jdbcType=BIGINT} vs count != #{usercount:BIGINT} 4) It would be nice to have a more straight forward way to get access to Connection sqlSession.getConfiguration().getEnvironment().getDataSource().getConnection(); vs sqlSession.getConnection(); 5) <select id="isUniqueUsername" parameterType="map" resultType="boolean"> SELECT (count(*) = 0) FROM user Where 1=0 </select> If I access this select the old fashion way: ((Boolean) getSession().selectOne("User.isUniqueUsername", map)).booleanValue(); ... I get a "Casting Exception". Apparently a Long is returned instead of a Boolean. I am running on a mysql database. As you know, mysql deals with booleans as bits (1's or 0's). Oddly enough this works fine in the ibatis 2.x versions. 6) Not sure if this will be of any use to anyone, but I've written a CalendarTypeHandler. On the surface, it seems to be working fine public class CalendarTypeHandler extends BaseTypeHandler { public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { Calendar calendar = (Calendar) parameter; ps.setTimestamp(i, (new Timestamp(calendar.getTimeInMillis()))); } public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { java.sql.Timestamp sqlTimestamp = rs.getTimestamp(columnName); if (sqlTimestamp != null) { return new java.util.Date(sqlTimestamp.getTime()); } return null; } public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { java.sql.Timestamp sqlTimestamp = cs.getTimestamp(columnIndex); if (sqlTimestamp != null) { return new java.util.Date(sqlTimestamp.getTime()); } return null; } } 7) Picky user guide stuff The User guide is overall very clean, complete, and clear. Great job!!! a)"....There are two TransactionManager types (i.e. type=”?????”) that are in...". What is the ???? suppose to be? b) An explanation about the Enum type handler would be nice (like what's persisted, code or index. Is it configurable?) c) "The iBATIS XML configuration file is contains settings and properties that have a dramatic effect on how..." Get rid of "is" 8) What .selectOne() is isn't clear. Maybe a note that an exception will be thrown if either a list or a null is returned? Thats all I have found so far. Cheers! _________________________________________________________________ Windows Live™: Keep your life in sync. http://windowslive.com/explore?ocid=PID23384::T:WLMTAGL:ON:WL:en-US:NF_BR_sync:082009