基于mybatis数据库分表实现

       由于公司系统属性原因,需要实时接入客户秒级数据,在数据量到达亿级时,发现性能远不如从前,系统不稳定性与日俱增,网站访问速度越来越慢,虽然已经使用了redis缓存来解决读写压力,仍然达到最优效果,因此目前将决定数据库分表,以实现对数据库的优化。由于业务属性原因,我们将主表按照货币进行分表。

       1、调用接口

		if(!CollectionUtils.isEmpty(dataList)) {
			int result = mainDailyMapper.batchInsert(dataList,dataList.get(0).getSymbol().toLowerCase());
//添加入数据库
			logger.info("{} records inserted to DB, RIC= {}", result, RIC);
		}

       2、接口实现

  int batchInsert(@Param("list")List<MainDaily> list,@Param("currency")String currency);

使用@param注解进行传值。

       3、mapper.xml文件配置:

  <insert id="batchInsert" parameterType="map">
    insert into main_daily_${currency} (QUOTEID, SYMBOL, QUOTIM, 
      QUOTE_DATE)
    values
        <foreach collection="list" item="item" index="index" separator=",">
        (
        #{item.quoteid},
        #{item.symbol},
        #{item.quotim},
        #{item.quoteDate}
        )
    </foreach>
  </insert>

注意:由于使用#{}会产生单引号破坏sql,因此table名用${},<foreach>中的collection的值与接口实现中@param中的value绑定,如@param("list"),那么collection=“list”,另外parameterType用map。

数据库分表基本实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值