Showing posts with label ibatis. Show all posts
Showing posts with label ibatis. Show all posts

Monday, March 25, 2013

Ibatis queryForList returning a List of String objects

Using an IBatis query that returns mutiple rows from the database, each row can be returned as an object and all these individual objects can be encompassed in a List.

query
<select id="getEmpNames" resultClass="java.lang.String">
        select names from emp_address where dept_id = #value#
    </select>
   
    Java code
    public class EmployeeDaoImpl extends SqlMapClientDaoSupport {
    ...
    ...
        public List<String> getEmpNames(Long deptId) {
       
         List<String> tempList = getSqlMapClientTemplate().queryForList("getEmpNames", deptId);
         return tempList;
         }
     ..
     }
   

For example if the above code snippet returns 5 rows from the database, IBatis internally constructs 5 String objects and returns a List<String>.

Saturday, January 12, 2013

Ibatis return custom java object from query as List

Using IBatis if a sql query returns a number of rows and you need to IBatis to convert these rows to a java Object then you need to

1) create a resultMap entry where you map the propery in the java object to a column in a table
2) create a statement which contains the query and specify a resultMap (This is has been defined by above step 1)

using the above two configurations, Ibatis converts each row into a new MyClass() object and then populates it with the data from that row.

java code snippet
Map parameterMap = new HashMap();
parameterMap.put("inputNames", "abc");
      
List nameList = (List) getSqlMapClientTemplate().queryForList("getEmpDetails", parameterMap);
       
 

ibatis config       
<sqlMap namespace="myQueries">

    <resultMap id="idMap" class="com.test.MyClass">
        <result property="myId" column="ID_COLUMN_IN_DATABASE_TABLE"/>
        <result property="name" column="NAME_COLUMN_IN_DATABASE_TABLE"/>
    </resultMap>
   
    <statement id="getEmpDetails" resultMap="idMap"
        parameterClass="java.util.Map">
        select mytable.ID_COLUMN_IN_DATABASE_TABLE, mytable.NAME_COLUMN_IN_DATABASE_TABLE
        from mytable
        where mytable.name = #inputNames#
    </statement>
   
</sqlMap>