没有使⽤数据库连接池的情况: 每次执⾏SQL语句, 要先创建⼀个新的连接对象, 然后执⾏SQL语句, SQL语句执⾏完, 再关闭连接对象释放资源. 这种重复的创建连接, 销毁连接⽐较消耗资源
使⽤数据库连接池的情况: 程序启动时, 会在数据库连接池中创建⼀定数量的Connection对象, 当客⼾请求数据库连接池, 会从数据库连接池中获取Connection对象, 然后执⾏SQL, SQL语句执⾏完, 再把Connection归还给连接池.
优点:
1.
减少了⽹络开销
2.
资源重⽤
3.
提升了系统的性能
使⽤
常⻅的数据库连接池:
•
C3P0
•
DBCP
•
Druid
•
Hikari
⽬前⽐较流⾏的是 Hikari, Druid
1.
Hikari : SpringBoot默认使⽤的数据库连接池
2.
Druid
如果我们想把默认的数据库连接池切换为Druid数据库连接池, 只需要引⼊相关依赖即可
<
dependency
>
<
groupId
>com.alibaba</
groupId
>
<
artifactId
>druid-spring-boot-3-starter</
artifactId
>
<
version
>1.2.21</
version
>
</
dependency
>
总结
MySQL 开发企业规范
1.
表名, 字段名使⽤⼩写字⺟或数字, 单词之间以下划线分割. 尽量避免出现数字开头或者两个下划线
中间只出现数字. 数据库字段名的修改代价很⼤, 所以字段名称需要慎重考虑。
MySQL 在 Windows 下不区分⼤⼩写, 但在 Linux 下默认是区分⼤⼩写. 因此, 数据库名, 表名, 字
段名都不允许出现任何⼤写字⺟, 避免节外⽣枝
正例: aliyun_admin, rdc_config, level3_name
反例: AliyunAdmin, rdcConfig, level_3_name
2.
表必备三字段: id, create_time, update_time
id 必为主键, 类型为 bigint unsigned, 单表时⾃增, 步⻓为 1
create_time, update_time 的类型均为 datetime 类型, create_time表⽰创建时间,
update_time表⽰更新时间
有同等含义的字段即可, 字段名不做强制要求
3.
在表查询中, 避免使⽤ * 作为查询的字段列表, 标明需要哪些字段(课堂上给⼤家演⽰除外).
1.
增加查询分析器解析成本
2.
增减字段容易与 resultMap 配置不⼀致
3.
⽆⽤字段增加⽹络消耗, 尤其是 text 类型的字段
#{} 和${} 区别
1.
#{}:预编译处理, ${}:字符直接替换
2.
#{} 可以防⽌SQL注⼊, ${}存在SQL注⼊的⻛险, 查询语句中, 可以使⽤ #{} ,推荐使⽤ #{}
3.
但是⼀些场景, #{} 不能完成, ⽐如 排序功能, 表名, 字段名作为参数时, 这些情况需要使⽤${}
4.
模糊查询虽然${}可以完成, 但因为存在SQL注⼊的问题,所以通常使⽤mysql内置函数concat来完成