NutzCN Logo
问答 想问一下 nutz 对于mysql 数据库的关键 是怎么处理的 把关键字转义了 可添加、修改,但是在查询的时候出不出来? 该怎么处理?
发布于 3200天前 作者 qq_722cb381 3023 次浏览 复制 上一个帖子 下一个帖子
标签:

语句:
INSERT INTO sdy_connectors(id,name,intro,type,power,appkey,appsecret,interval,creator,createtime,editor,edittime,delete)
VALUES(4,'22','22',2,2,'22','22',3,'22','2016-02-18 16:37:00','22','1900-01-01 00:00:00',0)

查询的时候 字段 interval 和 delete 查出来的数据就是默认值 ,这个该怎么处理?

22 回复
@Column("\'interval\'")

我试了一下 没好使, 而且添加、修改还报错

那是之前怎么把关键字转义的?

终极方法依然是改数据库,杜绝这巨坑的东西

之前 就是这样 @Column("·interval·'") 就是esc下面那个键,我也不想用关键字做字段啊 坑自己这属于,但是这字段都是总监定的 之前用SqlServer 加[] 转义的 都好用 但是用mysql 转义之后就出现问题了 ,不转义的话 只能做查询操作,不能添加,修改, 转义的话 添加,修改没问题 但是查询 查出来的值就是默认值 ,而不是修改后的值

哦,我大概知道啥原因了, 读数据的时候用 ·interval· 在mysql下拿不到值

我写段代码测试一下试试

恩恩 对 是拿不到值 坐等大神解决方案

测试代码

    @Test
    public void test_query_sp_mysql() {
    	if (!dao.meta().isMySql())
    		return;
    	dao.create(BadFieldName.class, true);
    	BadFieldName bfn = new BadFieldName();
    	bfn.interval = 1000;
    	dao.insert(bfn);
    	
    	assertEquals(1, dao.count(BadFieldName.class));
    	assertNotNull(dao.fetch(BadFieldName.class));
    	assertEquals(1000, dao.fetch(BadFieldName.class).interval);
    	System.out.println(Json.toJson(dao.fetch(BadFieldName.class)));
    }
    
    public static class BadFieldName {
    	@Id
    	public int id;
    	@Column("·interval·")
    	public int interval;
    }

能pass呢, 最后的toJson输出

{
   "id" :1,
   "interval" :1000
}

mysql 5.7.x
win7 x86 sp1
nutz 1.r.55

@Column("`interval`")
private int interval;

@At
@GET
@Ok("vel:connectors/list.html")
@RequiresRoles(value = { "regionAdmin", "admin" }, logical = Logical.OR)
public Result list(@Param(value = "page", df = "1") int page) {
    Pager<Connectors> pager = connectorsService.listByPage(page);
    pager.setUrl(_base() + "/connectors/list");
    return Result.success().addData("pager", pager);
}

返回数据  还是为0  但是数据库有值
name :"12",
        intro :"12",
        type :2,
        power :2,
        appKey :"2342348204",
        appsecret :"",
        interval :0,
        creator :"admin",
        createTime :"2016-02-18 16:37:00",
        editor :"admin",
        editTime :"2016-02-18 17:31:14",
        delete :0,
        id :4

跟mysql 和 nutz的版本有关系?

跑我写的测试代码

我想问一下 如果要是按页查询的话 怎么处理才能拿到值?

@qq_722cb381 咋又扯到分页了

我把这个 转义了 没好用
@Column("interval")
private int interval;
分页查询还是拿不到值

就不能跑一下测试代码告诉我结果吗?

@At
@Test
public void test_query_sp_mysql() {
if (!dao.meta().isMySql())
return;
/*dao.create(Connectors.class, true);
Connectors bfn = new Connectors();
bfn.interval = 1000;
dao.insert(bfn);*/
System.out.println(Json.toJson(dao.fetch(Connectors.class)));
assertEquals(1, dao.count(Connectors.class));
assertNotNull(dao.fetch(Connectors.class));
assertEquals(1000, dao.fetch(Connectors.class).interval);
System.out.println(Json.toJson(dao.fetch(Connectors.class)));
}

信息:
SELECT * FROM sdy_connectors LIMIT 0, 1
{
"type" :12,
"power" :12,
"interval" :0,
"delete" :0,
"id" :1
}
02-19 16:43:41.439 DEBUG - [NutDaoExecutor.http-bio-8070-exec-6] SELECT COUNT(*) FROM sdy_connectors
02-19 16:43:43.628 DEBUG - [LoggingMethodInterceptor.http-bio-8070-exec-6] [whenError] Obj = [com.brt.museum.module.connectors.ConnectorsModule$$NUTZAOP] , Throwable = java.lang.NoClassDefFoundError: org/junit/Assert , Method = public void com.brt.museum.module.connectors.ConnectorsModule.test_query_sp_mysql() , args = []
02-19 16:43:43.629 DEBUG - [LoggingMethodInterceptor.http-bio-8070-exec-6] [afterInvoke] Obj = [com.brt.museum.module.connectors.ConnectorsModule$$NUTZAOP] , Return = null , Method = public void com.brt.museum.module.connectors.ConnectorsModule.test_query_sp_mysql() , args = []
02-19 16:43:43.632 WARN - [FailProcessor.http-bio-8070-exec-6] Error@/connectors/test_query_sp_mysql :
java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/junit/Assert
at org.nutz.lang.Lang.wrapThrow(Lang.java:148)
at org.nutz.aop.interceptor.LoggingMethodInterceptor.filter(LoggingMethodInterceptor.java:66)
at org.nutz.aop.InterceptorChain.doChain(InterceptorChain.java:60)
at com.brt.museum.module.connectors.ConnectorsModule$$NUTZAOP.test_query_sp_mysql(ConnectorsModule.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)

从我第一次输出语句来看 查出来的两个关键字 都是默认的值 0 并没有查出来 应该和下面报错没关系, 下面那三行无非就是比较呗

就不晓得转成非junit代码吗,晕死. 都抛NoClassDefFoundError了还贴出来

嗯 我看不影响结果就没转 重要的是我这个关键字 还不好用,现在就差数据库版本和nutz的版本不一样了 其他的都一样 醉了

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