当前位置: 首页 > news >正文

外贸网站官网怎么做北京注册工作室代理公司

外贸网站官网怎么做,北京注册工作室代理公司,学网站建设需要什么工具,什么都不懂做网站最近遇到一个场景就是Java开发中,需要循环多个表名,然后用同样的查询操作分别查表,最终得到N个表中查询的结果集合。在查询内容不一致时Java中跨表查询常用的是遍历表名集合循环查库,比较耗费资源,效率较低。在查询内容…

最近遇到一个场景就是Java开发中,需要循环多个表名,然后用同样的查询操作分别查表,最终得到N个表中查询的结果集合。在查询内容不一致时Java中跨表查询常用的是遍历表名集合循环查库,比较耗费资源,效率较低。在查询内容格式一致的情况下,便可以用Java的数据库连接工具模拟mysql中union的操作,这里我用的数据库交互工具是mybatis。

首先介绍下union:

在mysql中被称为集合操作,操作类型分为两种:UNION DISTINCT 和  UNION ALL;其中UNION和UNION DISTINCT是一样的功能。UNION功能为合并多个查询的结果并去重,UNION ALL的功能为合并多个查询的结果不去重。

这里mybatis在实现union操作时,用到的是foreach 标签,foreach标签用于循环语句,它很好的支持了数据和 List、set 接口的集合,并对此提供遍历的功能。最常用的地方就是对于一些 SQL 语句中含有 in 条件,或者批量处理数据需要迭代条件时,可以使用 foreach 。利用foreach这一迭代特性,也满足了union多个表的使用场景,整体思路框架代码如下:

实现层设置每一个union的查询sql的业务代码:

List<Map> queryCondition = new ArrayList<>();
//这里的namelIst代表存储联合查询表名的集合
for (Map nameMap: namelIst) {Map conditionMap = new HashMap();//查询内容String fields = "a.*,b.*";//拼接表名String tableName = "table_aaa a ," + nameMap.get("tableName") + "` b";//查询条件String joinsql = "a.nameId = b.id ";//将循环一次的查询条件,表名,内容放入一个集合中,当做union的一个查询部分conditionMap.put("fields", fields);conditionMap.put("tableName", tableName);conditionMap.put("joinsql", joinsql);//放入总的集合中作为传入mapper查询的条件queryCondition.add(conditionMap);}//执行查询List<Map> pages = this.baseMapper.getSelect(queryCondition);

传入的查询参数为一个list<map>集合。

/*** union查询示范* @param queryCondition* @return*/List<Map> getSelect(@Param("queryCondition") List<Map> queryCondition);

xml文件的写法:

<select id="getSelect" resultType="java.util.Map"><foreach collection="queryCondition" item="condition" separator="union all">SELECT ${condition.fields}FROM ${condition.tableName}where ${condition.joinsql}</foreach></select>

这里对foreach标签中的标签进行一下简单的总结:

foreach 标签有六个属性:item,index,collection,open, close,separator

属性 作用
item表示集合中每一个元素或子集合进行迭代循环时的别名
index    指定一个名字,表示在迭代过程中每次迭代到的位置
open    表示该语句以什么开始(如in 条件语句,以’('开始)
close    表示该语句以什么结束(如in 条件语句,以’)'结束。
separator    表示在每次进行迭代之间以什么符号作为分隔符(如in 条件语句,以‘,’作为分隔符)
collection    该属性是必选的,但在不同情况下该属性的值是不一样的,主要有以下 3 种情况:
(1)如果传入的是单参数且参数类型是一个 List,collection 属性值为 list
(2)如果传入的是单参数且参数类型是一个 array 数组,collection 的属性值为 array
(3)如果传入的参数是多个,需要把它们封装成一个 Map,当然单参数也可以封装成 Map。Map 的 key 是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key。

通常在使用foreach标签时候,都是用来当做批量查询或者更新,或者where后面的条件使用,大概这样:

<foreach collection="各种集合" item="循环体中的别名" index="index"  open="(" separator="," close=")">自定义的各种参数
</foreach>

这里的操作属于mybatis的一个灵活运用,算是一个处理思路,鉴于网上现有相关思路不多,个人完成了测试,可以当做一种解决办法,提高一下程序的执行效率,避免多次连库。

http://www.yayakq.cn/news/443780/

相关文章:

  • 专业的西安免费做网站百度投诉电话24小时
  • 想自己做网站该学些什么php教育学校网站源码
  • 单页面网站多少钱大型建设网站
  • 网站外链隐形框架是什么seo裤子的关键词首页排名有哪些
  • 软件工程课程网站开发上海工程咨询行业协会
  • 广州乐地网站建设公司微信二级分销模式
  • 有了域名之后如何做网站珠海专业网站建设
  • 自己怎么做商城网站江苏伟业建设集团网站
  • 福州网站关键词蓝色经典网站
  • 印度网站后缀北京建设银行官方网站
  • 山东企业网站建设哪家好系统的网站建设教程
  • 常州网站制作公司排名电商培训机构推荐
  • 上海松江 网站建设公司网页传奇游戏排行榜前十
  • 做网站开发注册工商户可以么园林网站免费模板
  • 建设银行国际互联网网站无锡做网站首选众诺
  • sae 网站备案wordpress插件是什么
  • 公司网站开发款记什么科目wordpress分享功能
  • 网站建设外文参考文献微信官网下载2020最新版
  • 建网站要多长时间电商网站开发的难点在哪里
  • uemo网站源码有没有一些网站可以做问卷
  • 做景观素材有哪几个网站网站建设详情报价
  • 济南网站设计价格增加网站关键词
  • 完整的网站后台权限编码开服表网站开发
  • 佛山网站建设服务公司网站开发ckplayer加载失败
  • 重庆那里做网站外包好wordpress文艺主题
  • 网站跟系统的区别是南阳谁会做网站
  • 设计工作网站好网吧设计方案
  • 建站之星怎么收费网站阶段推广计划
  • 济南网站制作费用文化体育局网站建设
  • 建设银行网站证书一级做ae视频直播可以吗多少钱