#{}和${}区别以及PreparedStatement预编译理解

一.mysql如何开启预编译

Mysql是默认 没有开启预编译的,须要在配置中加上

jdbc:mysql://xxx.22.11.31:3306/dbname?useServerPrepStmts=truemysql

JDBC中使用PreparedStatement来抽象预编译语句,从而使用达到预编译效果。sql

1:预编译阶段能够对sql语句进行优化。

预编译能够将多个操做步骤合并成一个步骤,通常而言,越复杂的sql,编译程度也会复杂,难度大,耗时,费性能,而预编译能够合并这些操做,预编译以后DBMS能够省去编译直接运行sql。数据库

2:预编译语句能够重复利用。

把一个 sql 预编译后产生的 PreparedStatement 对象缓存下来,下次对于同一个sql,能够直接使用这个缓存的 PreparedState 对象。有兴趣的能够查看mysql驱动包里面的ConnectionImpl类是如何操做预编译的,这里提一下缓存PreparedStatement,在执行预编译时会先去判断是否存在缓存,若是存在则对参数清空,绑定新的参数。若是不存在则调用数据库进行预编译处理生成一个PreparedStatement对象。缓存

那若是按照默认不开启预编译的话,会是什么状况? 每次JDBC都须要编译sql,性能

相关文章
相关标签/搜索