没有合适的资源?快使用搜索试试~ 我知道了~
基于Java反射的map自动装配JavaBean工具类设计示例代码
1 下载量 74 浏览量
2020-08-26
22:17:18
上传
评论
收藏 45KB PDF 举报
温馨提示
试读
2页
主要给大家介绍了关于基于Java反射的map自动装配JavaBean工具类设计的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起看看吧
资源推荐
资源详情
资源评论
基于基于Java反射的反射的map自动装配自动装配JavaBean工具类设计示例代码工具类设计示例代码
主要给大家介绍了关于基于Java反射的map自动装配JavaBean工具类设计的相关资料,文中通过示例代码介绍
的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起看看吧
前言前言
JavaBean是一个特殊的java类,本文将给大家详细介绍关于基于Java反射的map自动装配JavaBean工具类设计的相关内容,
下面话不多说了,来一起看看详细的介绍吧
方法如下方法如下
我们平时在用Myabtis时不是常常需要用map来传递参数,大体是如下的步骤:
public List<Role> findRoles(Map<String,Object> param);
<select id="dindRoles" parameterType="map" resultType="role">
select id,role_name as roleName,note form t_role
where role_name = #{roleName}
and note = #{note}
</select>
//我们常常需要手打这些字段名
Map<String,Object> map = new HashMap<>();
map.put("roleName","xiaoming");
map.put("note","10");
List<Role> roles = roleMapper.findRoles(map);
但如果需要put的字段很多,而且每个属性名都很长的时候,那就很难受了,这里可以采用Java反射的方法去自动装配map,
以下是博主的实现:
public class Test {
//实现效果
public static void main(String[] args) {
HashMap<String, Object> map = new HashMap<>();
Person person1 = new Person();
person1.setAge(2);
person1.setName("foonsu");
//调用写好的mapBuild自动装配
mapBuild(person1, map);
//输出效果
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
public static void mapBuild(Object javaBean, Map map) {
Class clazz = javaBean.getClass();
//反射获取
Field[] name = clazz.getDeclaredFields();
for (Field field : name) {
//将非null的javaBean属性值装配到map中
if (getGetMethod(javaBean,field.getName())!=null)
map.put(field.getName(), getGetMethod(javaBean,field.getName()));
}
}
/**
* 根据属性,获取get方法
*/
public static Object getGetMethod(Object ob, String name) {
Method[] m = ob.getClass().getMethods();
try {
for (int i = 0; i < m.length; i++) {
if (("get" + name).toLowerCase().equals(m[i].getName().toLowerCase())) {
return m[i].invoke(ob);
}
}
} catch (Exception e) {
}
return null;
}
}
class Person{
int age;
String name;
String personId;
public String getPersonId() {
return personId;
资源评论
不善言辞的我
- 粉丝: 258
- 资源: 922
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功