什么是sql预编译
sql 预编译指的是数据库驱动在发送 sql 语句和参数给 DBMS 之前对 sql 语句进行编译,这样 DBMS 执行 sql 时,就不需要重新编译。
预编译阶段可以优化 sql 的执行。
预编译之后的 sql 多数情况下可以直接执行,DBMS 不需要再次编译,越复杂的sql,编译的复杂度将越大,预编译阶段可以合并多次操作为一个操作。
mybatis的好处
其几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集
{}与${}的区别:
#相当于对数据 加上 双引号,$相当于直接显示数据
#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
$将传入的数据直接显示生成在sql中。如:order by
u
s
e
r
i
d
user_id
userid,如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id.
#{} 就是编译好SQL语句再取值.
${} 就是取值以后再去编译SQL语句.
#{}最明显的优点就是防止sql注入,
这是由于${}在预编译之前就会被变量替换,这会存在sql注入问题
${ } 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换