最近项目需要,做了一个动态查询。把查询结果返回到页面上显示。
要查询的字段和表名都是动态的,是在后台拼出来的。
可是在ibatis中运行的时候总报“列名无效”,在sql/plus中运行则正常。
百思不得其解。
后来通过查资料,解决如下:
<select id="queryLogInfo" resultClass="java.util.HashMap" remapResults= "true " parameterClass="java.util.Map" >
select t.CREATOR,t.CREATE_DT,decode(o.BUSI_OPER_TYPE,'1','新增','2','修改','3','删除') as OPER_TYPE, $colNames$
from $tableName$ t,TAS_OPERATION_LOG o
where $pkIdName$ = #pkIdValue#
and t.log_id = #logId#
</select>
其中:remapResults= "true"是必须的,否则会报列名无效的错误。
前台画表格:
function doSelectAction(Re){
//返回的串
var str = Re.responseText.evalJSON();
var keys = str.keys;
var showNames = str.showNames;
//表头显示名称
var showNamesArray = showNames.split(",");
//sqlMap对应的字段名。
var keysArray = keys.split(",");
//查询结果
var tem = str.logStrlist.evalJSON();
//先清空表格
document.getElementById("newbody").innerText = '';
//画表格头
var row=document.createElement("tr");
for(var j=0;j<showNamesArray.length;j++){
var cell = document.createElement("td");
cell.align = 'center';
cell.appendChild(document.createTextNode(showNamesArray[j]));
row.appendChild (cell);
}
document.getElementById("newHead").appendChild (row);
//画表格
tem.each(function(obj){
var row=document.createElement("tr");
for(var i=0;i<keysArray.length;i++){
var cell = document.createElement("td");
cell.align = 'center';
cell.appendChild(document.createTextNode(obj[keysArray[i]]));
row.appendChild (cell);
}
document.getElementById("newbody").appendChild(row);
});
//senfe("表格名称","奇数行背景","偶数行背景","鼠标经过背景","点击后背景");
senfe("newbody","#f8fbfc","#e5f1f4","#ecfbd4","#bce774");
}
function senfe(o,a,b,c,d){
var t=document.getElementById(o).getElementsByTagName("tr");
for(var i=0;i<t.length;i++){
t[i].style.backgroundColor=(t[i].sectionRowIndex%2==0)?a:b;
// t[i].onclick=function(){
// if(this.x!="1"){
// this.x="1";
// this.style.backgroundColor=d;
// }else{
// this.x="0";
// this.style.backgroundColor=(this.sectionRowIndex%2==0)?a:b;
// }
// }
t[i].onmouseover=function(){
if(this.x!="1")this.style.backgroundColor=c;
}
t[i].onmouseout=function(){
if(this.x!="1")this.style.backgroundColor=(this.sectionRowIndex%2==0)?a:b;
}
}
}
后台把查询结果解析成json格式字符窜:
public ActionForward getInit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
OperationBO operationBO = null;
JSONObject data = new JSONObject();
try {
response.setContentType("text/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = null;
operationBO = (OperationBO) InteractionObjectFactory.getInstance()
.getInteractionObject("TP_OperationBO",
getAppContext(request));
String logId = request.getParameter("logId");
String operType = request.getParameter("operType");
//操作日志信息
Map map = operationBO.queryLogInfo(logId, operType);
List logList = (List) map.get("resultlist");
JSONArray logJsonList = JSONArray.fromObject(logList);
String logStrlist = logJsonList.toString();
try {
out = response.getWriter();
data.put("logStrlist", logStrlist);
data.put("keys", (String) map.get("keys"));
data.put("showNames", (String) map.get("showNames"));
out.println(data.toString());
} catch (JSONException e) {
e.printStackTrace();
} finally {
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
分享到:
相关推荐
IBATIS动态查询语句.doc
ibatis_动态查询条件详解及需要注意的地方
ibatis动态多条件组合查询 实例 说明
这个文件中包含了许多ibatis的查询语句,能够让你很清楚的知道,如何实现动态的查询。
iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...
NULL 博文链接:https://raymondwang1314.iteye.com/blog/1195820
Ibatis动态查询配置文件的讲解,来下载吧,好久才弄的哦!
ibatis 用HashMap解决Ibatis未知列名和列数的查询结果的resultClass映射
完整的ibatis的CRUD+存储过程+动态查询!!!!!!!!
开发指南 iBATIS SQL Maps Page 3 of 62 Map类型的Result 复杂类型属性(即自定义类型的属性) 避免N+1 Select(1:1) 延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多...
书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...
iBatis 1、Spring嵌套iBatis框架 2、iBatis调用存储过程 3、iBatis中设置动态表查询 4、提高iBATIS性能的几个注意点
使用动态查询是iBatis一个非常强大的功能。有时你已经改变WHERE子句条件的基础上你的参数对象的状态。在这种情况下的iBATIS提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的动态SQL标签。
简单的查询显示例子用struts 和ibatis做的数据库使用的是mysql,查询为ibatis动态模糊查询
使用Spring集成struts2、ibatis、poi实现的增删改查功能,包括采用jquery实现的无刷新查询机分页、dwr实现的两级联动、以及采用poi动态将数据库数据导出成excel,本demo采用mysql数据库,附有建表sql,项目导入...
SQL Maps (com.ibatis.sqlmap.*)......................................................................................................5 SQL Map的概念........................................................
第08课 mybatis 动态sql 第09课 bootstrap的搭建+栅格系统+table 第10课 bootstrap 表单 (二)会议管理系统之设计部分 第11课 原型设计_设备管理 第12课 原型设计_会议室管理+预约会议室 第13课 原型设计_会议管理...
项目简介: “实惠购”该项目是 B2C 商城,分为前台购物服务和后台管理服务。... ... 后台管理服务包括:后台权限管理服务,商品管理服务,用户...4.充分利用 iBatis 动态编译 sql 语句的特性,实现数据快速读取以及维护;
MyBatis,大家都知道,半自动的ORM框架,原来叫ibatis,后来好像是10年apache软件基金组织把它托管给了goole code,...本文给大家介绍MyBatis实践之动态SQL及关联查询,对mybatis动态sql相关知识感兴趣的朋友一起学习吧
Having,Table,Sql,Cols等函数和结构体等方式作为条件支持级联加载结构支持类ibatis方式配置SQL语句(支持XML配置文件,json配置文件,xsql配置文件,支持 , , 模板和自定义实现配置多种方式)支持动态SQL功能...