舉例1:使用BeanUtils工具封裝用戶提交的數(shù)據(jù)腕窥。
public static void main(String[] args)throws Exception {
// 模擬用戶的輸入的數(shù)據(jù)如下
String name = "XML基礎(chǔ)";
String author = "焦寧波";
String price = "99.99";
String date = "2013-01-04";
Book book = new Book();
// 任務(wù)是將以上的屬性設(shè)置給指定的Book對(duì)象
BeanUtils.setProperty(book, "name", name);
BeanUtils.setProperty(book, "author", author);
BeanUtils.setProperty(book, "price",price );
// 查看屬性是否封裝好
System.out.println(book);
}
發(fā)現(xiàn)使用上面的代碼可以省略基本數(shù)據(jù)類型的轉(zhuǎn)型的問題。進(jìn)而提高代碼的開發(fā)效率。
舉例2:自定義一個(gè)類型轉(zhuǎn)換器類蚯撩。
public static void main(String[] args)throws Exception {
// 模擬用戶的輸入的數(shù)據(jù)如下
String name = "XML基礎(chǔ)";
String author = "焦寧波";
String price = "99.99";
String date = "2013-01-04";
Book book = new Book();
// 注冊(cè)一個(gè)自己的轉(zhuǎn)換器
/**
* converter指定具體的轉(zhuǎn)換器
* clazz遇到什么類型調(diào)用上面的轉(zhuǎn)換器
*/
ConvertUtils.register(
new Converter(){
// 回調(diào)方法
@Override
public Object convert(Class type, Object value) {
if(value == null){
return null;
}
// 轉(zhuǎn)換為String
String data = (String)value;
// 將指定格式的字符串轉(zhuǎn)換為Date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(data);
return date;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
},
Date.class);
// 任務(wù)是將以上的屬性設(shè)置給指定的Book對(duì)象
BeanUtils.setProperty(book, "name", name);
BeanUtils.setProperty(book, "author", author);
BeanUtils.setProperty(book, "price",price );
BeanUtils.setProperty(book, "date",date );
// 查看屬性是否封裝好
System.out.println(book);
}
如果每次遇到一個(gè)復(fù)雜類型都需要自定義轉(zhuǎn)換器顽素,那樣的話實(shí)在麻煩咽弦。大家看在開發(fā)的時(shí)候可以先查看該接口是否提供了有效的實(shí)現(xiàn)類。
ConvertUtils.register(new DateLocaleConverter(), Date.class);
其實(shí)真正的封裝好的數(shù)據(jù)需要存儲(chǔ)在數(shù)據(jù)庫(kù)中胁出,那么javabean的數(shù)據(jù)類型應(yīng)該和數(shù)據(jù)庫(kù)的數(shù)據(jù)類型保持一致型型,那么在聲明持久化javabean的時(shí)候需要全部為數(shù)據(jù)庫(kù)的基本數(shù)據(jù)類型。
因此大家在JavaBean中需要導(dǎo)入的是java.sql.Date類全蝶,這樣就直接可以將日期自動(dòng)轉(zhuǎn)換了闹蒜。
舉例3:實(shí)現(xiàn)封裝好的JavaBean對(duì)象的屬性拷貝。
// 實(shí)現(xiàn)屬性封裝數(shù)據(jù)的一個(gè)拷貝
Book copy = new Book();
System.out.println(copy);
PropertyUtils.copyProperties(copy, book);
System.out.println(copy);
思考:如果使用BeanUtils封裝用戶的數(shù)據(jù)抑淫,那么也就是一個(gè)一個(gè)設(shè)置氨谅洹?豈不是也很麻煩始苇?
其實(shí)在真是的環(huán)境中我們可以直接獲取用戶提交的所有的數(shù)據(jù)信息砌烁,只需要進(jìn)行遍歷即可,但是為了方便快速的設(shè)置催式,那么可以將javabean中的屬性名和用戶提交的數(shù)據(jù)名保持一致函喉。