NutzCN Logo
问答 Nutz.Dao SQL 文件的格式 一个key对应多条sql 的写法
发布于 2691天前 作者 Leewell1989 2824 次浏览 复制 上一个帖子 下一个帖子
标签: dao

看文档 Nutz.Dao SQL 文件的格式http://nutzam.com/core/dao/customized_sql.html#ndoc-3说是支持一个健可以对应多条sql的

SQL 语句的名称 (或者说是键值)。你的程序可以通过语句的名称获取到某一条或几条 SQL 语句

这个是要怎么写呢?

还是

/*key*/
sql1
sql2 
/*key*/
sql1;
sel2

这两种都报错。

2017-08-10 16:57:58,097 DEBUG [localhost-startStop-1] o.n.d.i.s.r.NutDaoExecutor#exec [97] SQLException
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=TRUNCATE TABLE YUM_MENU;BEGIN-OF-STATEMENT;<space>, DRIVER=4.16.53
8 回复

先按文本取出来, 然后分隔, 分别生成SQL对象

还有一个办法哦, 自行扩展FileSqlManager

好的,以为已经实现了的。现在要在初始化的时候插一些初始数据,比较多,所以放在脚本文件里边批量跑进去。

你会发现分隔的时候很多坑...

哈哈,我去趟一下试试...

是坑都绕过我了吗,很轻松啊...

SqlManager fsm = new FileSqlManager(paths);
dao.setSqlManager(fsm);
log.debug(String.format("读取到[%d]组sql",  dao.sqls().count()));
String[] keys = dao.sqls().keys();
log.debug("################2.执行Sql脚本################");
for (String key : keys) {
	log.debug("################开始执行["+key+"]################");
	String sql = dao.sqls().get(key);
	if(Strings.isNotBlank(sql)){
		if(sql.contains(";")){ 
			//多条Sql
			String[] sqls = sql.split(";");
			for (String subSql : sqls) {
				log.debug("################将要执行的sql["+subSql+"]################");
				dao.execute(Sqls.create(subSql));
			}
		}else{//单个sql
			log.debug("################将要执行的sql["+sql+"]################");
			dao.execute(Sqls.create(sql));
		}
	}
}

脚本按照

/* key */
sql1;
sql2;
sql3

格式配置

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