Mybatis常用工具类(三)-- MetaObject、MetaClass
2021-02-03 23:18
标签:pre 类型 setvalue ring ORC sse company 默认 判断 原文链接:Mybatis常用工具类(三)-- MetaObject、MetaClass MetaObject 是 Mybatis 反射工具类,通过 MetaObject 获取和设置对象的属性值。 备注 接下来我们通过例子讲解如何通过 MetaObject 获取和设置对象属性。 创建一个 MetaObject 对象 判断是否有 getter 方法 获取含有 getter 方法的属性名 获取 getter 方法的返回类型 获取值 eg: 获取 Persons 列表中第一个 Person 的 personName 判断是否有 setter 方法 获取含有 setter 方法的属性名 获取 setter 方法的参数类型 设置值 eg: 将 Persons 列表中第一个 Person 的 personName 设置为 "小马" 与 MetaObject 不同的是,MetaObject 用于获取和设置对象的属性值,而 MetaClass 则用于获取类相关的信息。 备注 创建一个 MetaClass 对象 判断是否有默认构造方法 判断是否有 getter 方法 获取含有 getter 方法的属性名 获取 getter 方法的返回类型 获取值 eg: person 的 personName 判断是否有 setter 方法 获取含有 setter 方法的属性名 获取 setter 方法的参数类型 设置值 eg: person 的 personName 设置为 "小马" 喜欢我的文章,请关注公众号 Mybatis常用工具类(三)-- MetaObject、MetaClass 标签:pre 类型 setvalue ring ORC sse company 默认 判断 原文地址:https://www.cnblogs.com/javaDeveloper/p/13151682.htmlMetaObject
MetaObject 主要方法
方法
说明
hasGetter(name)
判断是否有属性 name 或 name 的 getter 方法。 1. 若定义 userId,没定义 getUserId() 方法,hasGetter("userId") 则返回 true; 2. 若定义方法 getUserId1(),没定义属性 userId1,hasGetter("userId1") 则返回 true。
getGetterNames()
获取含有 getter 相关的属性名称。 1. 若定义 userId,没定义 getUserId() 方法,则 userId 会被返回; 2. 若定义方法 getUserId1(),没定义属性 userId1, 则 userId1 会被返回。
getGetterType(name)
获取 getter 方法的返回类型。
getValue(name)
获取属性值。
hasSetter(name)
判断是否有属性 name 或 name 的 setter 方法。 1. 若定义 userId,没定义 setUserId(userId) 方法,hasSetter("userId") 则返回 true; 2. 若定义方法 setUserId1(userId1),没定义属性 userId1,hasSetter("userId1") 则返回 true。
getSetterNames()
获取含有 setter 相关的属性名称。 1. 若定义 userId,没定义 setUserId(userId) 方法,则 userId 会被返回; 2. 若定义方法 setUserId1(userId1),没定义属性 userId1, 则 userId1 会被返回。
getSetterType(name)
获取 setter 方法的参数类型。
setValue(name, value)
设置属性值。
相关例子
MetaObject metaObject = SystemMetaObject.forObject(company);
metaObject.hasGetter("companyName")
metaObject.getGetterNames()
metaObject.getGetterType("companyName")
metaObject.getValue("persons[0].personName")
metaObject.hasSetter("companyName")
metaObject.getSetterNames()
metaObject.getSetterType("companyName")
metaObject.setValue("persons[0].personName", "小马")
MetaClass
MetaClass 主要方法
方法
说明
静态方法 forClass(type, reflectorFactory)
创建 MetaClass 对象
hasDefaultConstructor()
判断是否有默认构造方法
hasGetter(name)
判断是否有属性 name 或 name 的 getter 方法。与 MetaObject 判断类似。
getGetterNames()
获取含有 getter 相关的属性名称。与 MetaObject 判断类似。
getGetInvoker(name)
name 的 getter 方法的 Invoker。
hasSetter(name)
判断是否有属性 name 或 name 的 setter 方法。与 MetaObject 判断类似。
getSetterNames()
获取含有 setter 相关的属性名称。与 MetaObject 判断类似。
getSetterType(name)
获取 setter 方法的参数类型。与 MetaObject 判断类似。
getSetInvoker(name)
name 的 setter 方法的 Invoker。
相关例子
MetaClass metaClass = MetaClass.forClass(Person.class, new DefaultReflectorFactory());
metaClass.hasDefaultConstructor()
metaClass.hasGetter("personName")
metaClass.getGetterNames()
metaClass.getGetterType("personName")
Invoker invoker = metaClass.getGetInvoker("personName");
Object personName = invoker.invoke(person, null);
metaClass.hasSetter("personName")
metaClass.getSetterNames()
metaClass.getSetterType("personName")
Invoker invoker = metaClass.getSetInvoker("personName");
invoker.invoke(person, new String[]{"小马"});
公众号
文章标题:Mybatis常用工具类(三)-- MetaObject、MetaClass
文章链接:http://soscw.com/essay/50638.html