一.预编译SQL
我们执行的SQL语句的结果虽然在可视化界面中可以看到。但是执行的过程并没有直观的看到。因此在mybatis框架当中,我们可以借助mybatis的日志来看到这些信息。这些日志是默认没有开启的,是关闭的,要查看日志,要按如下操作。
配置好后再次执行,发现确实是变了
这个SQL语句有一个专业的名字,叫做预编译SQL。
采用预编译SQL,参数会替换掉?,从而删除掉id=16的结果。
二.为什么要采用预编译的SQL?
一个SQL语句在执行时,会先检查缓存中是否有,有的话直接执行缓存中的SQL语句,如果没有的话先缓存再执行。
不使用预编译SQL,那么id不一样,就要重新缓存再执行
如果使用预编译:
第一次id = 1,delete from emp where id = ?在缓存当中没有,因此要先存入缓存中。第二次id = 2和id = 3直接执行就行,因为缓存中已经有了。这样就只需要预编译一次就行。 性能更高。
三.SQL注入
使用预编译SQL可以防止SQL注入问题,那么什么是SQL注入呢?
在后台管理系统的登录中,通过输入的用户名和密码,我们在数据库中进行校验。如果账号和密码校验成功那么便能够登录系统。将账号和密码填入到select count(*) from emp where username = ' ' and password = ' ',如果在数据库中找到了正确的信息,那么就证明该用户的账号密码正确,从而可以登录。但是有一个问题:
当我用户名随意输入,而密码输入为 ' or '1' = '1 时,仍然可以登录,这是为什么呢?
、