日志输出
在application.properties中,打开mybatis的日志,并指定输出到控制台
#配置日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
为何采用预编译SQL
优势:
性能更高
更安全(防止SQL注入)
这是通过java来操控SQL语句的流程,为了提高效率,数据库服务器会将编译后的SQL缓存起来,当下一次再执行SQL语句的时候,它会先检查缓存,看一下缓存当中是否有编译好的SQL语句,如果有,就不用执行前三部分了
当没有预编译时,执行下面三条语句会执行三次整个过程,就只是因为id的值不一样
当我们采用预编译时,我们就不用再执行整个流程了,只需改变id值,直接执行SQL语句
SQL注入
SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行公鸡(敏感文字,哈哈哈哈,手动狗头)的方法。
我们来演示一下SQL注入
-- 登录 如果count(*)大于0正确,等于0错误
select count(*) from emp where username ='zhangwuji' and password = '123456';
用户名和密码正确
现在我们来SQL注入,发现也登录进去了
select count(*) from emp where username ='weurfidjs' and password = '' or '1' = '1';
预处理就能解决这个问题
参数占位符也有两种
$符有风险