Hi, i'm currently working on a web application that uses iBATIS in Java ( JDK 1.5 ), but i ran into a problem and tried to fix it in a little test application, but no succes.
The first problem is that the attribute parameter, to use primitive parameters ( according to the developer guide ), is not included in the dtd ( http://www.ibatis.com/dtd/sql-map-2.dtd ). So i surfed the internet and found examples where they used primitive parameters and they didn't use any of the parameter attributes. But that doesn't work either. I've also tried parameterClass="string" with no succes. I've also played with the database types, first it were VARCHAR2's now it are CHAR's, the db is an Oracle 9.2.0.4 btw. Now i have an sql query with a where clause that compares a string as you can see in User.xml but i also tried with the user_id and then the sql query returns an result. If i use the Name in het where clause like it is now, it returns null. Does anybody has any idea why ? Db Table: Create table Users ( User_id numeric[10] primary key, Name Char[100] unique, Password Char[100] ); My sqlMapConfig.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="false" maxRequests="32" maxSessions="10" maxTransactions="5" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:virodb"/> <property name="JDBC.Username" value="vbapp"/> <property name="JDBC.Password" value="vbapp"/> <property name="JDBC.DefaultAutoCommit" value="yes"/> <property name="Pool.MaximumActiveConnections" value="10"/> <property name="Pool.MaximumIdleConnections" value="5"/> </dataSource> </transactionManager> <sqlMap resource="db/sql/sqlmap/User.xml"/> <sqlMap resource="db/sql/sqlmap/Message.xml"/> </sqlMapConfig> My User.xml: <?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="User"> <resultMap id="User" class="db.bean.User"> <result property="id" column="USER_ID" javaType="int" jdbcType="NUMERIC[11]"/> <result property="user" column="NAME" javaType="string" jdbcType="CHAR[100]"/> <result property="password" column="PASSWORD" javaType="string" jdbcType="CHAR[100]"/> </resultMap> <select id="getUserbyName" resultMap="User" resultClass="db.bean.User"> SELECT * FROM users WHERE name = #value# </select> </sqlMap> My Java file: reader = Resources.getResourceAsReader("db/sql/sqlmap/SqlMapConfig.xml"); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); user = (User) sqlMap.queryForObject("getUserbyName",username); if ( password != user.getPassword() ) <-- NullpointerException ( so the previous line returns null ) { throw new Exception(); }