1、在“控制器”依據業務邏輯生成int[]數組。
/**
* jfinal3.0+在SQL語句中使用in傳遞參數的方法
*/
public void user_list() {
int pageNumber = getParaToInt("page",1);
int pageSize = getParaToInt("rows",10);
String dept_id ="0101" ;
String sql ="SELECT id FROM sys_user t WHERE t.dept_id=?";
List<Record> list = Db.find(sql, dept_id);
int[] ids = new int[list.size()];
int i = 0 ;
for(Record r: list){
ids[i] = r.getBigDecimal("id").intValue();
i++;
}
Kv cond = Kv.by("ids", ids);
SqlPara sqlPara = Db.getSqlPara("sys.user_list", cond);
Page<Record> pageRecord = Db.paginate(pageNumber, pageSize, sqlPara);
//下面的render語句是我自己封裝的,以你們實際的爲準喔 ^_^
renderDataGrid(pageRecord);
}
2、在SQL語句中使用for循環遍歷生成佔位符?。
示例:
#namespace("sys")
#sql("user_list")
select * from sys_user
where t.dept_id in (
#for(x:ids)
#(for.index == 0 ? "" : ",") #para(x)
#end
)
#end
#end