NutzCN Logo
问答 nutzwk使用Dao查询单个字段问题
发布于 2482天前 作者 1037424761 3005 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

代码

public String seacherCertif(String id) {
    	Sql sql = Sqls.fetchString("select phone from sys_user where unitid = @id");
    	sql.setParam("id", id);
    	dao().execute(sql);
        return sql.getString();
	}

操作流程
假设原先的手机为 123456
使用上述代码返回:123456
我后来修改了phone 的值为123457
但是返回值任然是:123456
请问哪里有什么注意点吗?

15 回复

你连错数据库了

我试了很多次,就一个数据库连接配置
比如我重启下,在用,就是:123457,
但是再改一下,返回值又不变了,必须重启项目。
我感觉哪里有缓存的样子,还是什么地方赋值了就不会变

没人遇到过吗?我试了下,如果查询的是多个字段,就不会有这个问题。

jdbc查一下嘛

你显示用的user对象是shiro里面取出来的吧?

而非dao.fetch取出的,对吧?

不是的,这里和登录没什么关系,就是拿一个id对应的手机号,
有个页面能修改手机号,但是修改过后,我看数据库值改变了,但是我查询出来的值任然没有变。。。

也是通过dao进行修改的吗?

public void updateCertif(String id,String phone) {
    	Sql sql = Sqls.create("update sys_user set phone = @phone where id = @id");
    	sql.setParam("phone", phone);
    	sql.setParam("id", id);
    	dao().execute(sql);
	}

这是修改的。

我试了下,在一项目中。
修改过后是会变化的。
但是我在2个项目中,好像就没有效果了。。。
@wendal

a项目修改,然后b项目查看?

把dao.json里面的daocache配置去掉

var ioc = {
		conf : {
			type : "org.nutz.ioc.impl.PropertiesProxy",
			fields : {
				paths : ["config/custom/"]
			}
		},
	    dataSource : {
			factory : "$conf#make",
			args : ["com.alibaba.druid.pool.DruidDataSource", "db."],
	        type : "com.alibaba.druid.pool.DruidDataSource",
	        events : {
	        	create : "init",
	            depose : 'close'
	        }
	    },
		dao : {
			type : "org.nutz.dao.impl.NutDao",
			args : [{refer:"dataSource"}],
			fields : {
				executor : {refer:"cacheExecutor"}
			}
		},
		cacheExecutor : {
			type : "org.nutz.plugins.cache.dao.CachedNutDaoExecutor",
			fields : {
				cacheProvider : {refer:"cacheProvider"},
				cachedTableNames : ["sys_user", "sys_role", "sys_menu"]
			}
		},
		/*
		// 基于内存的简单LRU实现
		cacheProvider : {
			type : "org.nutz.plugins.cache.dao.impl.provider.MemoryDaoCacheProvider",
			fields : {
				cacheSize : 10000 // 缓存的对象数
			},
			events : {
				create : "init"
			}
		}
		*/
		// 基于Ehcache的DaoCacheProvider
		cacheProvider : {
			type : "org.nutz.plugins.cache.dao.impl.provider.EhcacheDaoCacheProvider",
			fields : {
				cacheManager : {refer:"cacheManager"} // 引用ehcache.json中定义的CacheManager
			},
			events : {
				create : "init"
			}
		}
};

包含cache都删了?

改好了,感谢大神。

so 直接改数据库,会造成daocache缓存不一致,数据还是dao执行才能更新缓存。

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