实体类只能通过手工set来赋值么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体类只能通过手工set来赋值么?相关的知识,希望对你有一定的参考价值。

我有一个通过数据库生成的实体类,因为字段比较多,手工写set..set....set...很累,有没有什么办法能快速把把数据库里的内容赋值给实体类?谢谢

参考技术A 很高兴为您解答!

用ibatis或者hibernate,把实体类与字段映射以后就不用set了

希望对您有用!本回答被提问者和网友采纳

C#中实体类的get、set的疑问,请大侠解答

public int Age

getreturn _age;
set_age=value;


public int Age

get;
set;

他们两个是一样的吗

单纯就这两个的对比而言,是一样的,只是“手动”和“自动”的区别。
第二个只是一种简写,实际上编译器会帮你加一个私有成员。
你可以验证一下:编译代码,然后再反编译,你就会发现结果了。

但是……
不建议第二种写法,原因:
1、灵活性
比如要对年龄验证,输入负数时抛出异常,第二种没办法。
2、效率
如果有构造函数,参数是年龄。第一种你可以对私有成员赋值、第二种只能对属性赋值,效率上是第一种高。

另外,这两种写法在“封装”上是没什么区别的!
参考技术A 效果是一样的!但是实际应用有区别。
第一种写法比较灵活,_age 为私有成员,而对其的封装Age成为属性。通过属性来保护私有成员,可以做到对成员的访问控制,比如:
只读:
public int Age

getreturn _age;

只写
public int Age

set_age=value;

读写
public int Age

getreturn _age;
set_age=value;

_age作为私有成员在类的内部可以任意的操作,这体现的封装的好处,而外部只能通过Age这个属性来访问。
参考技术B 是的,简单的说,前者是用于自定义的获取或设置Age的值,如果不做特殊定制,就是一样的 参考技术C 一样的,后一种是简写形式的。 参考技术D 后一种写法是C# 3.0中的自动属性,也就是说如果没有其它的逻辑判断(比如对赋值进行判定等等操作),仅仅只是简单的赋值和取值 ,那就可以用后面那种简单的写法,反之仍然还要用上一种。

以上是关于实体类只能通过手工set来赋值么?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA从数据库查出来的数据放到实体类想用反射的方法给他们赋值,怎么做?

C#中实体类的get、set的疑问,请大侠解答

java 实体类

Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate

struts2和hibernate 传值问题和实体类设计问题

C#获取实体类属性名和值