NutzCN Logo
问答 如何根据实体类来获取动态表名?
发布于 2525天前 作者 qq_36b64d67 3164 次浏览 复制 上一个帖子 下一个帖子
标签:

用这个查询查不到结果,SysActionExecute这个类对应的是动态表名,我想用自定义sql查询,但是如何获取这个类对应的表名呢?

List<SysActionExecute> sysActionExecuteList = dao.query(SysActionExecute.class,null);
38 回复
dao.getEntity(User.class).getTableName()

@wendal 获取的结果还是没有把那个动态参数拼进去啊

Daos.ext得到一个dao然后取

@wendal 具体应该怎么写

看Daos.ext方法

@wendal 那个tableName传什么

用来填充@Table里面参数的

@wendal Daos.ext(dao,"${ym}").getEntity(SysActionExecute.class).getTableName(); 是这样么?@Table("sys_action_execute_${ym}")是表名

Daos.ext(dao,"201801").getEntity(SysActionExecute.class).getTableName(); 

@wendal 结果还是没有啊

想了想,还得用TableName.run

TableName.run(new Atom(){
     public void run(){
           dao.getEntity(User.class).getTableName();
    }

},"201801");

参数顺序有可能反了

@wendal 这样得到的结果还是没填充

TableName.run("sys_action_execute_${ym}",new Atom(){
            @Override
            public void run(){
                dao.getEntity(SysActionExecute.class).getTableName();
            }
        });
TableName.run("201801",new Atom(){
            @Override
            public void run(){
                dao.getEntity(SysActionExecute.class).getTableName();
            }
        });

得到什么了打印出来

这个dao是不是封装过的?不是原版的?debug一下TableName.render方法吧

@wendal TableName.render();里传哪个参数?

打断点就行

@wendal TableName.render(null); 不加参数要报错,加参数都是null

。。。 不是直接调用它啊,getTableName会调用到它

不行就getTableName开始debug吧😄

@wendal 过程中看到了有sys_action_execute_201801但是最终结果打出来还是sys_action_execute_,还有${ym}这个应该是年月吧,可是数据库中表只有2018没有月份

怎么打印的?

@wendal 过程中 Entity<com.yh.app.webser.entity.sys.SysActionExecute:sys_action_execute_201801>

最终打印 直接在idea控制台输入dao.getEntity(SysActionExecute.class).getTableName() 结果是 sys_action_execute_

怎么可能呢,贴你现在的代码

String tableName="sys_action_execute_"+"2018"

!!!!

@wendal TableName.run("201801",new Atom(){
@Override
public void run(){
dao.getEntity(SysActionExecute.class).getTableName();
}
});

哪里打印了?没看到啊

@wendal 我在整个方法最后打了断点然后在控制台输入dao.getEntity(SysActionExecute.class).getTableName()这句打印,并没有写打印语句

加个log.debug打印出来

@wendal 打印出sys_action_execute_201801,,,但是数据库表中表名为sys_action_execute_2018,而且201801这个不能写死吧

run的第一个参数就是啊

现在的参数是“201801”,要把这个改成系统当前年份么?

@qq_36b64d67 看你想拿哪个年份咯

@wendal List list = dao.query(SysActionExecute.class,null); 用这种方法查询这个表为什么得出结果是0,而且看日志SELECT * FROM sys_action_execute_

那得用 Daos.ext(dao, "201801").query

@wendal 用实体类这样方法查询应该不能满足同时把查询结果去重保留某个记录最大值这样效果吧

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