zoukankan      html  css  js  c++  java
  • 在MyBatis中实现动态表名

    在MyBatis中实现动态表名

    1. 场景:由于MySQL本身受单表数据文件大小限制,数据量将成为性能瓶颈。当单表数据量很大,或预计会很大时,将单个大表和单个大表数据文件,拆分成多个小表和小表数据文件就是一个简单有效的提升新能的方式。一个较好的解决查询性能问题的手段就是水平分表。分表后,一次针对不同拆分逻辑的查询,必须被定位到正确的小表上,此时就需要能动态匹配小表的表名。
    2. 方案:在MyBatis中一个可行的方式就是将表名参数化,首先,表名必须“枚举化”,传给MyBatis的值必须是服务端可控的,不能由客户端传递(防止SQL注入攻击)。其次,SQL语句中的表名取值符号必须用${tableName},不能用#{}(语句中的其他参数建议使用#{}来取值)。
    3. 举例:
      <select id = "bizQuery">
          SELECT
              t.*
          FROM
              ${dto.tableName} AS t 
          WHERE
              t.`code` = #{dto.code}
      </select>
      
  • 相关阅读:
    iOS8 新特性
    iOS Autoresizing Autolayout Size classes
    tabBar的内部控件
    导航控制器的根控制器 是滚动性&普通的frame区别
    选择排序&冒泡排序&折半查找
    站内搜索
    Shell安装
    Xcode themes
    扫码跳转AppStore
    iOS手机APP命名规范整理
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/14158938.html
Copyright © 2011-2022 走看看