java list填入table_后台传list到前台,前台怎么解析,怎么将解析的数据填充到已经存在列名table中...

需求背景:

mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集 ,并将数据传输到前台,并渲染到已经存在列名的table的对应字段中

特别需要注意的是这种需求和往常的不一样,平时的都是直接传一些属性值到dao.xml文件中 在xml中进行接收,拼接sql语句。

往常的编写过程如下:

XXXService.java

public SqlConfig getSqlConfigByTitle(String sqlTitle) {

// TODO Auto-generated method stub

return sqlConfigurationDao.getSqlConfigByTitle(sqlTitle);

}

XXXDao.java

public SqlConfig getSqlConfigByTitle(String sqlTitle);

XXXDao.xml

select * from cf_sql s

where s.sqlVersion=#{sqlVersion}

我的这种需求是:在已经存在的一个表中查寻出已经存在的sql,之后通过service层 的某个方法传输到Dao.java 的某个方法中,之后再在Dao.xml中通过#{....}进行sql拼接,查出的数据多条记录,对于每一条记录都是由多个属性组成,但是如果sql语句不同的话,查询出的字段的数目也不一样,所以这里就不好通过resultTMap去映射了,因为一般resultMap会在Dao.xml中进行bean属性值和数据库列值的映射

此情景中的解决办法:

Dao.xml

${value}

具体的为什么用resultType="java.util.LinkedHashMap"  可见另一篇博文:https://www.cnblogs.com/isme-zjh/p/12809477.html

Dao.java

public List> superManagerSelect(String value);

Service.java

public List> superManagerSelect(String sqlContext) {

// TODO Auto-generated method stub

return sqlConfigurationDao.superManagerSelect(sqlContext);

}

Controller.java

注意控制器里面的处理:

List dataList =new ArrayList();

dataList.add(linkedHashMap.values().toString());将LinkedHashMapdataList

中的内容一项一项的输出的结果如下(Console栏中输出):

[id,name,sex][001,zhangsan1,男]

[id,name,sex][002,zhangsan2,女][id,name,sex][003,zhangsan3,男]

[id,name,sex][004,zhangsan4,男]

@ResponseBody

@RequestMapping(value="dataSelect")public List dataSelect(@RequestParam("sqlId")String sqlId) {

System.out.println("==========sqlId==========>"+sqlId);

List dataList =new ArrayList();if((!sqlId.equals(""))&&(!(sqlId==null))){ //注意字符串中的 判空操作

SqlConfig sqlc =SqlConfigService.getSqlConfigById(sqlId);

String sqlContext=sqlc.getSqlContext();//测试LinkedHashMap

result=SqlConfigService.superManagerSelect(sqlContext);for (LinkedHashMaplinkedHashMap : result) {

dataList.add(linkedHashMap.values().toString());

}for(String item : dataList) {

System.out.println("$$$====>"+item);

}

}returndataList;

}

前台html   代码

var sqlId = $("#sqlId").val();

$.ajax({

type: ‘post‘,

url: ‘${ctx}/sys/dataSelect‘,

data:{"sqlId":sqlId},

dataType: ‘json‘,

success: function(data){

if(data!=null){

var array = eval(data);

var con=""; 此段代码是在已经有列名的table中填充数据了!$.each(array,function(index,item){

var str1 =item.replace("[","");

var str2 =str1.replace("]","");

//alert(str2);

var arr = str2.split(‘,‘);

con += "

";

for(var i=0;i

con+="

"+arr[i];

con+="

";

}

con+="

";

})

$("#myBody").html(con);

}else{

}

}

});

${item}

这就是这种特殊情况的解决办法!

最终的效果是:

通过点击调用不同的sql会从数据库中查询出来 不同的数据通过js  填充到已经提前的渲染出列名的table中

效果如图:

c3f0c8d98ba23118fff07d10a192468b.png

var sqlId = $("#sqlId").val();$.ajax({type: ‘post‘,url: ‘${ctx}/sys/dataSelect‘,data:{"sqlId":sqlId},dataType: ‘json‘,success: function(data){if(data!=null){var array = eval(data);var con="";$.each(array,function(index,item){var str1 =item.replace("[","");var str2 =str1.replace("]","");//alert(str2);var arr = str2.split(‘,‘);con += "

";for(var i=0;i"+arr[i];con+="";}con+="";})//alert(con);$("#myBody").html(con);}else{}}});

原文:https://www.cnblogs.com/isme-zjh/p/12809543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值