画布 1
JDBC数据源配置
  连接池必须实现：javax.sql.DataSource接口
  url 连接参数
    这个参数会导致事务会有界超时，会限制大事务。这也可以在 Spring 注解里配置
    connectTimeout
      获取连接的超时（单位为毫秒），0表示无超时。
    socketTimeout
      socket 读取超时（默认值0表示无超时）。
    useCompression
      与服务器进行通信时采用zlib压缩（真／假）？ 默认值为“假”。
    autoReconnect
      ，这个配置会在连接断掉的时候进行重连，但是会丢失session状态，所以官方并不推荐使用。
将MySQL服务器变量 “wait_timeout”设置为较高的值，而不是默认的8小时
      使用 Druid 连接池自带的 keepAlive 功能。Druid 在 1.1.18 版本支持了 keepAlive 功能，它能在连接空闲时通过异步线程执行 ping 命令使连接保活，避免了 time_out 异常的出现。
    failOverReadOnly
      自动重连成功后，连接是否设置为只读？ 通常为 false，这样事务可以不被影响
    maxRows
      返回的最大行数（0，默认值表示返回所有行）。
    useUnicode
      处理字符串时，驱动程序是否应使用Unicode字符编码？ 仅应在驱动程序无法确定字符集映射，或你正在强制驱动程序使用MySQL不是固有支持的字符集时（如UTF-8）才应使用。真／假，默认为“真”。
    characterEncoding
      如果“useUnicode”被设置为“真”，处理字符串时，驱动程序应使用什么字符编码？ 默认为“autodetect”。
    rewriteBatchedStatements=TRUE
    useAffectedRows
      如果找到 3 条，更新 2 条（有一条的数据完全和更新语句一样，所以不会被更新）
        useAffectedRows=true 返回 2
        useAffectedRows=false 返回 3
    zeroDateTimeBehavior=convertToNull
      在 Mysql 里 0000-00-00 00:00:00 可能是有效的；而在 Java 中，这样的转换是无效的。
这样允许转化会导致 Java 里隐藏一些错误的日期，所以 MySQL 的缺省日期值最好使用 1971 年的值
    useOldAliasMetadataBehavior=true
      使用别名作为返回的key的名称，如select id as ‘ID’ from dual，使用ID而不是id。生效和mysql版本有关
    allowMultiQueries=true
      可以在sql语句后携带分号，实现多语句执行。
      可以执行批处理，同时发出多个SQL语句。
  mybatis 参数
    <property name="dialect" value="mysql"/>
    <setting name="cacheEnabled" value="false"/>
      这个意思是开关全局缓存，人们往往容易搜到这个配置，也容易关闭这个配置
    <setting name="localCacheScope" value="STATEMENT"/>
      SESSION 的意思是使用一级缓存（会话级别隔离），STATEMENT的意思是关闭一级缓存
    <setting name="jdbcTypeForNull" value="NULL"/>
  druid/dbcp等连接池的特定 properties（不适宜放在 jdbc url 的配置里的配置）
    testWhileIdle
      <property name="testWhileIdle" value="true" />
      指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
    timeBetweenEvictionRunsMillis
      在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程
      <property name="timeBetweenEvictionRunsMillis" value="90000" />
    numTestsPerEvictionRun
      在每次空闲连接回收器线程(如果有)运行时检查的连接数量
      <property name="numTestsPerEvictionRun" value="3" />
    minEvictableIdleTimeMillis
      连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值，单位毫秒
      <property name="minEvictableIdleTimeMillis" value="1800000" />
    validationQuery
      SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录
      <property name="validationQuery" value="SELECT 1" />
    testOnBorrow
      指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
      <property name="testOnBorrow" value="true" />
    testOnReturn
      指明是否在归还到池中前进行检验注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
      <property name="testOnReturn" value="false" />