轉自:http://www.blogjava.net/cmzy/archive/2008/09/11/228271.html
org.springframework.jdbc.core.BeanPropertyRowMapper 可以将查詢的ResultSet和實體類的字段進行實作自動映射
也就說,它可以把ResultSet和實體類的字段進行實作自動映射。
一個具體的例子如下:
假如有這樣一個表,SQL-Server2000的建表腳本如下:
/*
管理者表
*/
CREATE TABLE admin(
id int identity(1,1) primary key,
username varchar(20) not null,
password varchar(32) not null,
)
為此,我們編寫一個對應的實體類admin,它是一個标準的javaBean,代碼如下:
/**
*
*/
package db.demo;
/**
* @author zhangyong
*
* @version 8:11:57 PM
*
*/
public class Admin {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
以前,在相應的AdminDAO中,我們以前是這麼做滴,看起來很麻煩,如果一個表的字段很多的話,就要人命了,我們必須不停的set、get:
/**
*
*/
package db.demo;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
/**
* @author zhangyong
*
* @version 10:05:37 PM
*
*/
public class AdminDAO extends JdbcDaoSupport {
private final String ID = "id";
private final String USERNAME = "username";
private final String PASSWORD = "password";
private final String TABLE_NAME = "admin";
/**
* 查詢記錄總數<br/>
*/
public List<Admin> queryAll() {
final String sql = "Select * from " + TABLE_NAME;
return getJdbcTemplate().query(sql, new RowMapper(){
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Admin admin = new Admin();
admin.setId(rs.getInt(ID));
admin.setUsername(rs.getString(USERNAME));
admin.setPassword(rs.getString(PASSWORD));
return admin;
}
});
}
}
可見,我們必須的手工對ResultSet和Admin進行映射。而現在,我們隻是需要這樣:
/**
*
*/
package db.demo;
import java.util.List;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
/**
* @author zhangyong
*
* @version 10:05:37 PM
*
*/
public class AdminDAO extends JdbcDaoSupport {
private final String TABLE_NAME = "admin";
/**
* 查詢記錄總數<br/>
*/
public List<Admin> queryAll() {
final String sql = "Select * from " + TABLE_NAME;
return getJdbcTemplate().query(sql, new BeanPropertyRowMapper(Admin.class));
}
}
呵呵,隻是一句話就完全搞定了……Sprin會為我們自動映射……顯然這樣比以前友善多了。我們還可以把它用在其它任何使用RowMapper的場合……畢竟它繼承自RowMapper……
需要注意的是:BeanPropertyRowMapper是根據字段名和實體類中的标準Setter方法進行映射滴。也就是說,我們需要使表中的字段名和實體類的成員變量名稱一緻。
版權聲明:本文為CSDN部落客「weixin_33690963」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_33690963/article/details/92059564