在nutz中能不能只传递一个string 的名称 就能获取相关的实体,并操作?
比如实体是sysdict @Table("sys_dict") 如何通过tablename 获取主键和类呢?
2 回复
文不对题...
NutDao内部只保存了 Pojo --> Entity-->TableName/ViewName的关系, 没有反查, 原因是:
* 一个Pojo仅在第一次使用时才解析为Entity, 不像Hibernate那样需要先全部声明
* @Table是支持动态表名的哦,所以Entity->TableName事实上是一对多的关系
不过,方法总是有的,参考Daos.createTablesInPackage方法的思路
public static void createTablesInPackage(Dao dao, String packageName, boolean force) {
for (Class<?> klass : Scans.me().scanPackage(packageName)) {
if (klass.getAnnotation(Table.class) != null)
dao.create(klass, force);
}
}
改造一下
public static Map<String, Class<?>> getTableNameMap(Dao dao, String packageName) {
Map<String, Class<?>> map = new HashMap<>();
for (Class<?> klass : Scans.me().scanPackage(packageName)) {
if (klass.getAnnotation(Table.class) != null) {
NutEntity en = dao.getEntity(klass);
map.put(en.getTableName(), klass);
}
}
return map;
}
@wendal 谢谢兽总~
添加回复
请先登陆