NutzCN Logo
问答 nutz有没有根据表名自动建一张表,然后生成主键的方法啊
发布于 2282天前 作者 qq_64f81159 1551 次浏览 复制 上一个帖子 下一个帖子
标签:

RT,要做一个动态表单的东西,首先根据表名建立表,并生成uuid类型的主键,然后可以在前台增加字段类型和字段名,后台修改表,nutz有没有简单的方法,自己拼有点麻烦啊,还想兼容oracle mysql sqlserver

14 回复

通通走非pojo的dao api咯

构建map对象,然后daogetEntity得到Entity对象(表的元数据),然后dao.getExpert().createEntity就能建表了

问题是, 做个包含字段 id,tablename, key, value虚拟表,比建个真正table要好实现

虚拟表也可以,只是感觉没有真正的表看着清楚,两种都试试把 到时候。

kv.set("+*id", 0); // 添加一个主键
dao.getJdbcExpert().createEntity(dao, dao.getEntityHolder().makeEntity(tableName, kv));
这个添加的主键我能设置长度吗 希望是uuid不是自增长的。

kv.set("+name", "");

错了, 应该是星号

加号自增, 星号主键

id/name在这里只是字段名称

这个没有自定长度 后面我如果要增加其他字段 有的字段特别长 不会出问题吗?前台如果传了长度和类型这边能直接设置吗 还是需要自己写方法。

map转Entity的细节, 看org.nutz.dao.impl.entity.MapEntityMaker

看了一下
数据类型是可以设置的

  // ColType是啥呢?
            if (map.containsKey("." + key + ".coltype")) {
                ef.setColumnType((ColType) map.get("." + key + ".coltype"));
            } else {
                // 猜测一下数据库类型
                Jdbcs.guessEntityFieldColumnType(ef);
            }

但是貌似没有设置width的地方啊 ,这个就根据数据库默认的来?

获取到entity之后, 可以拿出特定字段的MappingField,然后setWidth, 可能需要强转为NutMappingField

还有个问题,我首先创建的是表和主键 其他字段是追加到表里面去的,用这种方法是不是只能一次都建好 不能追加或者删除字段?

然后要增加和删除用Daos.migration(dao, klass, add, del);?

添加回复
请先登陆
回到顶部