Teambiz中三種特殊RowMapper的使用
作者:何楊
撰寫日期:2012年2月25日
版本:1.00
更新日期:
第一部分:功能說明
針對特殊目的的查詢,TeamBiz提供了一系列的RowMapper類以減輕程序員的勞動。
第二部分:核心組件
名稱 | 路徑 | 說明 |
IntegerRowMapper | teambiz\src\com\ibm\heyang\dao\rowmapper\IntegerRowMapper.java | 只需進(jìn)行數(shù)量查詢時(shí),如select count(*) from tb,明確只會返回一行一列,這時(shí)建議使用這個(gè)類。 |
StringRowMapper | teambiz\src\com\ibm\heyang\dao\rowmapper\StringRowMapper.java | 當(dāng)只查詢一列時(shí),如select a from table,建議使用這個(gè)類。 |
UserRowMapper | eambiz\src\com\ibm\heyang\dao\rowmapper\UserRowMapper.java | 當(dāng)需要從JDBCTemplate查詢到的鏈表中取出對象時(shí),建議仿照這個(gè)類制作自己的RowMapper類 |
第三部分:各種RowMapper類的具體使用
1. IntegerRowMapper。
StringBuilder sb=new StringBuilder();
sb.append(" select ");
sb.append(" count(*) as recordcount");
sb.append(" from teambiz_menu");
String sql=sb.toString();
List<?> ls=this.getJdbcTemplate().query(sql, new IntegerRowMapper());
Integer count=(Integer)(ls.get(0));
以上代碼路徑:teambiz\src\com\ibm\heyang\dao\MenuDao.java中isNoMenu函數(shù)。
2. StringRowMapper
StringBuilder sb=new StringBuilder();
sb.append(" select");
sb.append(" t01.group_name");
sb.append(" from");
sb.append(" sys_group");
sb.append(" t01,");
sb.append(" sys_user");
sb.append(" t02");
sb.append(" where");
sb.append(" t01.groupid=t02.groupid");
sb.append(" and");
sb.append(" t02.userid="+userid+"");
String sql=sb.toString();
// 查詢
List<?> ls = this.getJdbcTemplate().query(sql,new StringRowMapper());
最后得到的ls就是一個(gè)包含字符串元素的鏈表,要取值對其進(jìn)行遍歷即可。
3. UserRowMapper的使用示例
StringBuilder sb=new StringBuilder();
sb.append(" select ");
sb.append(" ID, ");
sb.append(" name, ");
sb.append(" email, ");
sb.append(" pswd, ");
sb.append(" groupName, ");
sb.append(" companyName,");
sb.append(" level");
sb.append(" from teambiz_user");
sb.append(" where name='"+name+"' and ");
sb.append(" pswd='"+pswd+"' ");
String sql=sb.toString();
List<?> ls = this.getJdbcTemplate().query(sql, (new UserRowMapper()));
if(ls.size()==1){
return (User)ls.get(0);
}else{
throw new Exception("用戶名或密碼錯誤!");
}
以上代碼路徑:teambiz\src\com\ibm\heyang\dao\UserDao.java中的getUserByNamePswd函數(shù)。
第四部分:小結(jié)
對數(shù)據(jù)庫進(jìn)行各種查詢是程序員的常見任務(wù)之一,如果能適當(dāng)運(yùn)用以上類,能減少代碼的重復(fù)程度及減輕他們的勞動強(qiáng)度。