sqlkit用法问题

新建一个sqlkit时,需要指定configname,设置为默认main

activeRecord.addSqlTemplate("sql/edu.sql");
sqlkit = new SqlKit(DbKit.MAIN_CONFIG_NAME, true);

然后直接使用sqlkit.getSQL() 方法报空指针异常,获取失败

再次指定sql文件目录后,并解析,才可以。是我用法有问题吗?@jfinal

完成代码如下:

dp = new DruidPlugin(URL, USERNAME,PASSWORD);
dp.set(10, 5, 40);
dp.start();

activeRecord = new ActiveRecordPlugin(dp);
activeRecord.setDialect(new MysqlDialect())
        .setDevMode(true)
        .setShowSql(true) //是否打印sql语句
;
activeRecord.addSqlTemplate("sql/edu.sql");

sqlkit = new SqlKit(DbKit.MAIN_CONFIG_NAME, true);
sqlkit.addSqlTemplate("sql/edu.sql");
sqlkit.parseSqlTemplate();

调用

String sql =  sqlkit.getSql("base.dw_school_term");

成功获取值。

评论区

JFinal

2025-06-30 18:26

SqlKit 是 ActiveRecordPlugin 自己内部维护的,不需要干预

添加 sql 使用 : activeRecordPlugin.addSqlTemplate(...)

杜福忠

2025-06-30 23:30

https://jfinal.com/doc/5-13
常见业务不需要直接使用SqlKit。
正确姿势:
String sql = Db.getSql("findGirl");
Db.find(sql, 16, 23);

Db.template("findGirl", 18, 50).find();

PS:真有特殊业务要操作SqlKit的话,正确姿势是:
sqlkit = activeRecord.getConfig().getSqlKit();

大白熊

2025-07-01 11:13

@杜福忠 @JFinal 谢谢,Db.getSql("findGirl")更合适,赞!我们是要通过select语句创建临时表,自动生成create语句,getSql后其中有占位符?不能直接用,替换成''后可以了。本来想通过sqlkit获取最终执行的sql语句----参数已经被填充的sql,发现也不行。

杜福忠

2025-07-01 13:29

@大白熊 那肯定是使用姿势不对,你这个业务建议使用 Db.template("findGirl", kv).update(); 更优雅,另 map 参数 占位符 要用 #para(age) 占位,数据就会对应到该位置,再细读一下文档,体验会更好 https://jfinal.com/doc/5-13

热门反馈

扫码入社