来看一个测试应用,对象是User:
@BeanTableName(name="z_user")
public class User extends ThinObject {
@Primary
String uid ;
String uname;
String rid;
public User(String userid, String username) {
super();
this.uid = userid;
this.uname = username;
}
public User() {
}
@Override
public String toString() {
return "(userid:"+uid+", username:"+uname+")";
}
//setter and getter
}
测试类:
public class TestUser extends TestCase {
static {
new TryThinContext("zero");
ThinContext.setDefaultSchema("zero");
}
public void testUpdate() throws SQLException{
User user = new User("wanghh","王海洪");
user.obtainMe();
user.setUname("海洪");
user.updateMemory("uname");
System.out.println(user.rid);
}
public void testAdd() throws SQLException{
User user = new User("thinery","王海洪");
user.setRid("admin");
user.remember();
}
public void testDelete() throws SQLException{
User user = new User();
user.setUid("thinery");
user.forget();
}
public void testQuery() throws SQLException{
User user = new User();
List<Object> users = user.associate(SQLCriterion.get("rid", Operator.EQ, "marketing"));
System.out.println(users);
}
@Override
protected void tearDown() throws Exception {
ThinContext.getThinContext().cleanHoldConection();
}
}
在看一个扩展的对象
public class Group extends ThinObject{
@Override
public List associate(Object... params) {
//获取自定义SQL
String sql = sqls.getProperty("subGroupUser");
List<Map<String,Object>> datas =null;
try {
QueryBeanTable qbt = ThinContext.ctx.getQueryBeanTable("subGroupUser");
qbt.setQuerySQL(sql);
qbt.setParameters(params);
datas = qbt.query();
} catch (Exception e) {
e.printStackTrace();
}
return datas;
}
/**
* 给组里添加新用户
* @param users
*/
public void add(User... users){
//to write by yourself
}
}
如果全部这样的方式编写,可以少写不少DAO,service,甚至全部不写。一切都在对象模型里了。这种对象模型一旦建立完成。相关系统就可以相互复用。就像一个车轮子可以供多个车型使用。