现在使用自定义的MapBean通用格式,在上述的<Ibatis的使用-I>中代码修改,对数据库作操作:
MapBean.java类如下:
package com.test;
import java.sql.Timestamp;
import java.util.HashMap;
public class MapBean extends HashMap<String, Object> {
public MapBean() {
}
public MapBean(Object... args) {
put(args);
}
public int getInt(Object key) {
return getInt(key, 0);
}
public int getInt(Object key, int defaultInt) {
Integer i = (Integer) get(key);
return i == null ? defaultInt : i;
}
public String getString(Object key) {
return (String) get(key);
}
public String getString(Object key, String defaultValue) {
String value = (String) get(key);
return value == null ? defaultValue : value;
}
public Timestamp getTimestamp(Object key) {
return (Timestamp) get(key);
}
public void put(Object... args) {
for (int i = 1; i < args.length; i += 2) {
put(String.valueOf(args[i - 1]), args[i]);
}
}
}
user.xml中增加如下代码:
<typeAlias alias="mapbean" type="com.test.MapBean" />
<select id="selectUserByName" parameterClass="mapbean" resultClass="mapbean">
<![CDATA[
select * from users where username=#username#
]]>
</select>
最后,我们的测试端Main函数中编写如下代码:
package com.test;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import com.dao.IbatisFactory;
import com.entity.User;
import com.ibatis.sqlmap.client.SqlMapClient;
public class IbatisTest {
public static void main(String[] args)
{
SqlMapClient sqlMap = IbatisFactory.getSqlMap();
MapBean params = new MapBean("username","aa");
try {
Iterator<MapBean> it = sqlMap.queryForList("selectUserByName", params).iterator();
while(it.hasNext())
{
MapBean tb = it.next();
for(Iterator i = tb.entrySet().iterator();i.hasNext();)
{
Map.Entry e = (Entry) i.next();
System.out.println(e.getKey().toString() + e.getValue().toString());
}
System.out.println("/n");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}