目录
-
统一概念
说在前面,不管是Vo还是pojo、model类,他们都是Java描述实体的一种方式类,他们的功能都是用于数据传输、数据处理,他们实际上不是一个存在于数据库表中的结构,只是在数据调用的时候,方便程序员标识标记数据的一种方法,直接操作他并不会改变数据库或其他物理结构,比如一个接口:传递了model的一个属性参数,这时候没有改变其物理地址,其底层是由指针指向相应的内存地址,直到他的下一层,ORM持久化的时候才会改变,也就是常说的写操作。我们只要知道他是方便了数据传输,内核创建的方法使用一样的,只是适用于多种不同场景罢了,就很好理解啦。
-
结构
-
Vo类:
-
值对象,例如在接口updateuser(int uid)的实现类时候,可以使用Vo的实体类来作为中转,接收处理过的数据,例如修改完其中一个属性,
UserVo user = new UserVo();
user.setSex("11");
user.setName("zhuxuewen");
Map<String,String> map = ObjectUtil.objectToMap(user);
Model类:
Model在MVC中是模型层,他的作用是接收前端的参数,所以它的属性一般是前端传进来的参数,可以使用一般的实体类,只不过字段或类型有所区别,另一种写法可以是一个接口,参数不变,省略了方法,将参数使用@BeanField放入一个区域并且相互关联起来,形成虚表,将参数的get\set方法作为bean注入到bean中。如下写法
package org.easyboot.entity.address;
import org.easyboot.core.annotation.bean.BeanField;
import org.easyboot.core.annotation.bean.BeanFields;
import org.easyboot.core.annotation.bean.BeanGetter;
import org.easyboot.core.annotation.bean.BeanSetter;
@BeanFields({
// 姓名
@BeanField(key = "name", type = String.class),
})
public interface User{
/**
* 获取 姓名
*/
@BeanGetter
String getName ();
@BeanSetter
void setName (CharSequence name);
好处:这样写法的优点是,将数据与物理表结构分离开来,操作的时候交给了工厂代理,使用的时候只需要反射模式调用类,就能传递数,方便了程序员的可读性,一定意义上也防止了数据污染。
3、Pojo: 简单无规则java对象,一般是作为包名放entity等,他是一个大概念
纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法、可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。