Browse Source

jfinal 4.1 release ^_^

James 6 years ago
parent
commit
38f5c0f08b

+ 10 - 0
src/main/java/com/jfinal/plugin/activerecord/DaoTemplate.java

@@ -27,6 +27,16 @@ public class DaoTemplate<M extends Model> {
 		this.sqlPara = dao.getSqlPara(key, paras);
 	}
 	
+	public DaoTemplate(boolean byString, Model dao, String content, Map<?, ?> data) {
+		this.dao = dao;
+		this.sqlPara = dao.getSqlParaByString(content, data);
+	}
+	
+	public DaoTemplate(boolean byString, Model dao, String content, Object... paras) {
+		this.dao = dao;
+		this.sqlPara = dao.getSqlParaByString(content, paras);
+	}
+	
 	public List<M> find() {
 		return dao.find(sqlPara);
 	}

+ 38 - 0
src/main/java/com/jfinal/plugin/activerecord/Model.java

@@ -1047,6 +1047,14 @@ public abstract class Model<M extends Model> implements Serializable {
 		return _getConfig().getSqlKit().getSqlPara(key, paras);
 	}
 	
+	public SqlPara getSqlParaByString(String content, Map data) {
+		return _getConfig().getSqlKit().getSqlParaByString(content, data);
+	}
+	
+	public SqlPara getSqlParaByString(String content, Object... paras) {
+		return _getConfig().getSqlKit().getSqlParaByString(content, paras);
+	}
+	
 	public List<M> find(SqlPara sqlPara) {
 		return find(sqlPara.getSql(), sqlPara.getPara());
 	}
@@ -1090,6 +1098,36 @@ public abstract class Model<M extends Model> implements Serializable {
 	public DaoTemplate<M> template(String key, Object... paras) {
 		return new DaoTemplate(this, key, paras);
 	}
+	
+	// ---------
+	
+	/**
+	 * 使用字符串变量作为 sql 模板进行查询,可省去外部 sql 文件来使用
+	 * sql 模板功能
+	 * 
+	 * <pre>
+	 * 例子:
+	 * String sql = "select * from blog where id = #para(id)";
+	 * dao.templateByString(sql, Kv.by("id", 123).find();
+	 * </pre>
+	 */
+	public DaoTemplate<M> templateByString(String content, Map data) {
+		return new DaoTemplate(true, this, content, data);
+	}
+	
+	/**
+	 * 使用字符串变量作为 sql 模板进行查询,可省去外部 sql 文件来使用
+	 * sql 模板功能
+	 * 
+	 * <pre>
+	 * 例子:
+	 * String sql = "select * from blog where id = #para(0)";
+	 * dao.templateByString(sql, 123).find();
+	 * </pre>
+	 */
+	public DaoTemplate<M> templateByString(String content, Object... paras) {
+		return new DaoTemplate(true, this, content, paras);
+	}
 }