我想问一下,如何 让一个javabena 的属性自动生成?
public class From{ /** * 论坛的author信息表 * */ public class FormPerson { private int ID; /*这里的ObjectA 可能是 Student 可能是 Teacher*/ private ObjectA objecta; private int count; } ------------------------------------------------------------- public class Teacher { private int ID; private String name; private String password; private String email; private String sex; private int active; private Set<Student> students; } ---------------------------------------------------------- public class Student { private int ID; private String name; private String password; private String email; private String sex; private int active; } ---------------------------------------------------------- /*抽取出来的论坛发贴人信息*/ public class ObjectA { private int ID; private String name; private String email; private String sex; }
当ID> 20000的时候 ObjectA 为 Teacher
ID<20000 ObjectA 为 student
所有的ID都保持独立,
这是一个教学网站 ,有论坛功能
论坛的发贴人信息table,一部分来自stduent和teacher的共同属性
我不想做继承,
管理那里用了hibernate 已经完成了,论坛在用ibatis,我该怎么实现呢
可否告诉我是哪一种设计模式,我是一个菜鸟,。。。
teacher和student都集成ObjectA,
然后再FormPerson 中写一个静态方法:
static ObjectA createObjectA(int id)
{
if(id>20000){
return new Teacher(xxxxx,xx,xx);
}
if(id<20000)
return new Student(xxxxx,xx,xx);
}
干嘛要这样呢?
1.一个表示类型的属性不是很好么
2.如果硬是要分,那就应该是两个没什么关系的东西了,想有关系,也许可以选择用什么课程呀、班级呀等等这些东西把他们联系起来。
[quote="sunzixun"]当ID> 20000的时候 ObjectA 为 Teacher
ID<20000 ObjectA 为 student
所有的ID都保持独立, [/quote]
这个完全无法理解为什么要这么做。。。。。。。。。。。参考第一点。
这个就得你逻辑里去判断
当ID> 20000的时候 ObjectA 为 Teacher
ID<20000 ObjectA 为 student
在相应满足的条件下进行强制转换啊
我给你设计个逻辑
1.
[code="java"]
/**
该方法用于 逻辑判断FormPerson 并最终形成sql语句返回
*/
public String judgeRole(FormPerson person ){
int id = person.getId();
String sql = nul;
if(id>20000){
sql = " select * from Teacher where id = '"+id+"'";
}
if(id<20000)
sql = " select * from student where id = '"+id+"'";
return sql ;
}
2.同上 如法泡制 。。。。。。。。。。。。。。
总之 最后的结果 是以返回 sql为主
因为你用到了ibatis
3.你这表结构设计得..... 不过你硬要这么做 也可以做出来。
在学校 多耍点算法也有好处。
加油。。。
[/code]
n你需要的是apache Commons里一个叫BeanUtils的组件,能把ObjectA里的匹配的属性的值复制到Teacher或Student里,不匹配的属性则不被复制。
参考的写法是
[code="java"]
if( objecta.id>20000)
BeanUtils.populate(objecta, teacher);
else
BeanUtils.populate(objecta, student);
[/code]