日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

beanutils初步

發(fā)布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 beanutils初步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. beanUtils工程

1.工程目錄

2.需要的jar包:
commons-beanutils-1.9.3.jar
commons-collections-3.2.2.jar
commons-logging-1.2.jar
3.轉(zhuǎn)換器
DateConverter.java:

package com.my.model;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.converters.AbstractConverter; import org.apache.commons.beanutils.converters.DateTimeConverter;public class DateConverter<T> extends org.apache.commons.beanutils.converters.DateTimeConverter {private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");@Override/*** arg0 轉(zhuǎn)換的目的類型* arg1 需要轉(zhuǎn)換的數(shù)值* @return 返回轉(zhuǎn)換后的數(shù)值*/public <T> T convert(Class<T> clz, Object value) {//1.轉(zhuǎn)換的類型是否符合要求if(Date.class!=clz) {return null;}if(value instanceof String) {try {return (T) sdf.parse((String)value);} catch (ParseException e) {e.printStackTrace();}}return null;}@Overrideprotected Object convertArray(Object arg0) {return super.convertArray(arg0);}@Overrideprotected Class<?> getDefaultType() {return null;}}

PointConvert.java:

package com.my.model;import org.apache.commons.beanutils.converters.AbstractConverter;public class PointConvert<T> extends AbstractConverter{@Overridepublic <T> T convert(Class<T> clz, Object value) {if(Point.class!=clz) {return null;}if(value instanceof String) {String val=(String)value;String[] strArray=val.split(",");if(strArray.length<2) {return null;}int x=0, y=0;try {x=Integer.parseInt(strArray[0]);y=Integer.parseInt(strArray[1]);}catch(NumberFormatException e) {e.printStackTrace();}return (T) new Point(x, y);}return null;}@Overrideprotected <T> T convertToType(Class<T> arg0, Object arg1) throws Throwable {// TODO Auto-generated method stubreturn null;}@Overrideprotected Class<?> getDefaultType() {// TODO Auto-generated method stubreturn null;}}

4.model類
Point.java:

package com.my.model;public class Point{private int x;private int y;public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public Point(int x, int y) {this.x = x;this.y = y;}public Point() {}@Overridepublic String toString() {return "Point [x=" + x + ", y=" + y + "]";} }

User.java:

package com.my.model;import java.util.Date;public class User {private int id;private String username;private int age;private String password;private Date born;private Point point;public Point getPoint() {return point;}public void setPoint(Point point) {this.point = point;}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 int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Date getBorn() {return born;}public void setBorn(Date born) {this.born = born;}public User(int id, String username, int age, String password, Date born) {super();this.id = id;this.username = username;this.age = age;this.password = password;this.born = born;}public User() {}public User(int id, String username, int age, String password, Date born, Point point) {this.id = id;this.username = username;this.age = age;this.password = password;this.born = born;this.point = point;}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", age=" + age + ", password=" + password + ", born="+ born + ", point=" + point + "]";}}

5.Junit測試類:
TestBeanUtils.java:

package com.my.test;import static org.junit.Assert.*;import java.lang.reflect.InvocationTargetException; import java.util.Date;import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org.junit.After; import org.junit.Test;import com.my.model.DateConverter; import com.my.model.Point; import com.my.model.PointConvert; import com.my.model.User;public class TestBeanUtils {@Testpublic void test01() {User user=new User();User user2=new User();String key="username";String value="張三";try {BeanUtils.copyProperty(user, key, value);BeanUtils.copyProperty(user, "age", 1);BeanUtils.copyProperty(user, "age", "20");BeanUtils.copyProperty(user, "dass", value);//DateConverter does not support default String to 'Date' conversion.//這時候需要自己定義相應(yīng)的轉(zhuǎn)換器來完成轉(zhuǎn)換//定義轉(zhuǎn)換器的步驟://1創(chuàng)建一個類讓其實現(xiàn)Converter接口.//2.覆蓋convert方法,在這個方法中實現(xiàn)轉(zhuǎn)換//3.拷貝屬性之前注冊轉(zhuǎn)換器//注冊Date類型的轉(zhuǎn)換器DateConverterConvertUtils.register(new DateConverter<>(), Date.class);ConvertUtils.register(new PointConvert<>(), Point.class);BeanUtils.copyProperty(user, "born", "1997-2-20");BeanUtils.copyProperty(user, "point", "10,12");//BeanUtils.copyProperty(user, "born", new Date());BeanUtils.copyProperties(user2, user);} catch (IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}System.out.println(user);System.out.println(user2);}}

運(yùn)行結(jié)果:

User [id=0, username=張三, age=20, password=null, born=Thu Feb 20 00:00:00 CST 1997, point=Point [x=10, y=12]] User [id=0, username=張三, age=20, password=null, born=null, point=null]

2.beanUtils封裝請求參數(shù)

/*** * @param clz,目標(biāo)類的類型* @param request,請求* @return 目標(biāo)類型的對象*/public static Object setParam(Class<?> clz, HttpServletRequest request) {Map<String, String[]> paramMap=request.getParameterMap();Set<String> strSet=paramMap.keySet();Object object=null;try {object=clz.newInstance();} catch (InstantiationException | IllegalAccessException e) {e.printStackTrace();}for(String str: strSet) {LogUtil.printLog(str+": "+paramMap.get(str)[0]+" |"+object);try {String[] paramValue=paramMap.get(str);if(paramValue.length>1) {BeanUtils.setProperty(object, str, paramValue);}else {BeanUtils.setProperty(object, str, paramValue[0]);}} catch (IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}}return object;}

總結(jié)

以上是生活随笔為你收集整理的beanutils初步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。