怎样得到bean中的所有字段

怎样得到bean中的所有字段,第1张

利用java 反射机制,运行时获取类信息

package comtestdoemo;

import javalangreflectField;

import javalangreflectMethod;

public class MainTest {

/

@param args

/

public static void main(String[] args) throws Exception{

Class demo=ClassforName("comtestdoemoStudent");

Field[] fields=demogetDeclaredFields();

Method[] methods=demogetDeclaredMethods();

for(Field f:fields){

Systemoutprintln("字段:"+fgetName());

}

for(Method method:methods){

String m=methodgetName();

if( mcontains("set")){

Systemoutprintln("方法:"+m+"()");

}

}

}

}

class Student{

private String name;

private int age;

private String address;

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

thisaddress = address;

}

}

很简单哟,但首先明确一点,java并没有提供方法可以直接返回引用名称的,我们只能自己实现,方法如下:

1、类中定义一个私有String类型的 instanceName 字段,并写get方法;

2、在构造方法中使用有参构造为其赋值;

3、new对象时传入引用名称;

3、使用的地方直接调用get方法即可返回改引用名称;

通过循环(for)么,把name_list里面的数据一个个拿出来,循环alist里面的name,然后对比,相同的就放进新的List里面,没有就不放。第一个比完了就第二个,一样的。希望可以帮到你,不懂再问。

for(int i=0,name_listlength,i++)

{

for(int j=0,alist length,j++)

{

if(name_list[i]equals(alist[j]))//判断如果相同就放入新集合

{

listadd();//放入你的新集合

}

else//否则什么也不做

{

}

}

}

可能你的取值跟我不同,因为你的alist 里面有三个对象,你把name对象取出来对比就可以了,我只是给你提供一个思路,取值按照你自己的取就可以了

Bartender脚本可以使用许多不同的方法来获取其他对象的值。其中一种方法是使用“Get”函数,它可以从其他对象中获取值。例如,如果要从一个文本框中获取值,可以使用以下代码:

var value = Get("TextBox1");

另一种方法是使用“Find”函数,它可以搜索整个文档,以查找指定的对象。例如,如果要搜索文档中的所有文本框,可以使用以下代码:

var textBoxes = Find("TextBox");

最后,Bartender脚本还可以使用“GetProperty”函数来获取对象的属性值

many-to-many 多对多 比如一个用户可以有多种角色 一种角色可以对用多个不同的用户

所以角色和用户之间的关系是多对多的关系 一般要用第三张表来出来两者对应的关系

one-to-many 一对多 比如一个老师可以对应很多个学生

many-to-one 相反的是多对一

one-to-one 一对一 比如公民和身份z就是一一对应的

在hibernate中以1对多为例(老师-学生)

配置文件

# Teacherhbmxml

<!-- 有多个学生 Set

key 指定的是学生表中的外键

one-to-many 指定存储到student表的持久化类

inverse="true" 指定关系维护的方向 1:n的关系中(多的一方应该维护关系) 关系的维护问题

-->

# Studenthbmxml

<!--

name属性指定的是加载的1这一端的属性的名称

class属性指定加载哪一个持久化类

column属性指定的是按照哪一个外键加载该持久化类

-->

希望对你有用

可以在类里面加上get和set方法,get方法是给你来获取值的,set方法是给对象赋值的

举例

public class Flower {

private Integer fid;

private String fname;

private double fprice;

public Flower(){

}

public Flower(Integer fid,String fname,double fprice){

thisfid=fid;

thisfname=fname;

thisfprice=fprice;

}

public Integer getFid() {

return fid;

}

public void setFid(Integer fid) {

thisfid = fid;

}

public String getFname() {

return fname;

}

public void setFname(String fname) {

thisfname = fname;

}

public double getFprice() {

return fprice;

}

public void setFprice(double fprice) {

thisfprice = fprice;

}

public static void main(String[] args) {

Flower f1=new Flower();//创建一个对象,调用的是无参的构造函数,这时对象是空的,即没值

f1setFid(1001);//通过set方法赋值

f1setFname("水仙");

f1setFprice(100);

Systemoutprintln(f1getFname());//通过get方法取值

Flower f2 = new Flower(1002,"玫瑰",200);//调用有参构造函数,直接赋值

Systemoutprintln(f2getFname());//通过get方法取值

}

}

到了Hibernate30以后,关联关系的对象默认都是使用延迟加载,例如<one-to-many时但我在映射<one-to-one,<many-to-one关系时指定了lazy="true",但是在查询对象时,我只想查询一个对象,仍然会把这个对象所关联的<one-to-one,<many-to-one对象一起查询出来,这样造成了极大的性能浪费在不指定lazy属性时,<many-to-one所关联的对象反而会延迟加载,这让我大为困惑,还以为是Hibernate的bug在网上查找资料,说在为了延迟加载<one-to-one,<many-to-one所关联的对象,需要设置被关联的对象<class name="" lazy="true",我也这样做了,但是仍然没有效果仔细阅读了Hibernate的手册,才发现原来要延迟加载<one-to-one,<many-to-one所关联的对象时,除了要指定lazy="true"外,还需要运行期字节码增强,而我省去了这一步,所以延迟加载没有效果同时还发现在默认情况下,<one-to-one,<many-to-one的lazy属性是"proxy"而不是"true"!因此如果直接采用lazy的默认值,是可以延迟加载的总结一下:<many-to-one默认的属性是lazy="proxy",此时默认是会延迟加载的在指定了lazy="true"之后,必须要经过运行期字节码增加,延迟加载才有效果而<one-to-one相对要复杂一点,延迟加载还要受到constrained属性的限制constrained="false"时表明实体和被关联到的实体的约束不是强制的,即存在一个实体时,它通过<one-to-one关联的实体可能存在,也可能不存在,这时在查询实体时,Hibernate总会发起一次查询检查<one-to-one所关联的实体是否存在,而这时已经可以把one-to-one关联的实体查询出来了,因此在<one-to-one关系中,如果constrained="false",总是会立即加载关联到的实体如果当constrained="true",且lazy="proxy"(默认),是可以延迟加载的如果当constrained="true",且lazy="true"时,需要经过运行期字节码增加,延迟加载才会奏效如果数据量过大, 当然还是有这个必要 也可以做到, 但是返回的不会是对象,而是字段数组hibernate 管这叫投影 Criteria criteria=sessioncreateCriteria(Userclass);ProjectionList proList = ProjectionsprojectionList();//设置投影集合 proListadd(ProjectionsgroupProperty("userName")); proListadd(ProjectionsgroupProperty("password")); criteriasetProjection(proList);最后返回的List是 Object[] , [0] = userName, [1] = password 如果你真的只用来查 userName,password, 那就小题大做了 我想直接取出view(String userName,String password)的形式,两种方法 1 属性的延迟载入在hbmxml的属性上加 lazy=true2 轻量设计单独设计一个类, 只包含 userName 和password再写一个xml啊, 没人规定一张表只能映射一次轻量的employee映射

以上就是关于怎样得到bean中的所有字段全部的内容,包括:怎样得到bean中的所有字段、java 中怎么获得对象引用的名称、android开发 通过字段查找对应的对象!。。。新手求教!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9526933.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存