直接上代码吧
先看下我的目录结构

all.sql内容如下

user.sql内容如下

设置AppConfig
public void configPlugin(Plugins me) {
// 配置 druid 数据库连接池插件
DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("connurl"), PropKit.get("username"), PropKit.get("password").trim());
me.add(druidPlugin);
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
System.out.println(PathKit.getRootClassPath());
arp.setBaseSqlTemplatePath(PathKit.getRootClassPath());
arp.addSqlTemplate("all.sql");
// 所有映射在 MappingKit 中自动化搞定
arp.setShowSql(true);
_MappingKit.mapping(arp);
me.add(arp);
}解释一下第八第九行:
第八行:设置了 sql 文件存放的基础路径,注意上例代 码将基础路径设置为了 classpath 的根,可以将 sql 文件放在 maven 项目下的 resources 之下, 编译器会自动将其编译至 classpath 之下,该路径可按喜好自由设置。
第九行:
添加外部 sql 模板文件,可以通过多次调用 addSqlTemplate 来添加任意多个外部 sql 文件,并且对于不同的 ActiveRecordPlugin 对象都是彼 此独立配置的,有利于多数据源下对 sql 进行模块化管理。
使用
System.out.println(Db.getSql("user.alluser"));
System.out.println(Db.getSqlPara("user.findbyuserid", 1));
Map<String, Object> para = new HashMap<String, Object>();
para.put("phone", "158");
System.out.println(Db.getSqlPara("user.likephone", para));
List<Record> list = Db.find(Db.getSqlPara("user.likephone", para));
for (Record r : list) {
System.out.println(r);
}
下图是运行结果
如果参数很多的话 , 建议用map
注:补充一点 , 在#sql("alluser")与#end之间可以加上 #if(username) and username=#para(username) #end
这里的具体代码可以参考另一个童鞋的分享 http://www.jfinal.com/share/574
效果出来了,说的有点啰嗦 嘿嘿 !
有什么问题欢迎留言 , 如果说错了还请大家批评指正
感谢波哥@JFinal
此外,建议去掉下面这行代码:
arp.setBaseSqlTemplatePath(PathKit.getRootClassPath());
改成下面这行:
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
改成上面这行的好处是,即便你的模板打包到 jar 包都可以读到