目标:
BaseService<T> 写1个通用的查询方法,参数是 普通的Model。
public List<T> list(T model){
}
public class Brand extends BaseBrand<Brand>{
public Company getCompany() {
return super.get("company");
}
public void setCompany(Company company) {
super.put("company", company);
}
}
BaseBrand是自动生成的,而且里面的getter/setter都是 数据库已有字段 生成的。
实现1:
根据输入参数Brand找到父类 BaseBrand的Class,可以找到它所有的getter方法,进而找到 所有 数据库字段。(Brand里写的是 自定义的方法属性)
有了数据库字段名称,就可以拼接:
select * from table_name
where 1=1
for( 每一个数据库字段){
and fieldName= model对应字段的值.
}
实现2:
Table table = TableMapping.me().getTable(model.getClass());
Map<String, Class<?>> columnTypeMap;
表的元数据 有字段名。
怎么找到 这个字段 对应的Model的字段名呢?
比如 数据库字段名 user_name,model可能是userName 也可能是user_name。
JFinal自动解析了数据库的“_”。
想请教波哥,给一种 比较简单的方法,找到信息:
大概的格式:
List{
数据库字段 user_name,model的字段“userName”
}
拼接出
user_name = model.getUserName();
getColumnTypeMapEntrySet()
getColumnTypeMap()
getColumnNameSet()
足够满足你的需求了