在application.properties
中配置日志输出信息,启动后控制台显示:
一、预编译sql性能更高。
如果不用mybatis预编译sql
则执行上述代码需要编译3次,因为每次id值都不一样,没有缓存,用mybatis
预编译sql后,对于同样的sql语句(只是id不同),就只需要编译1次,因为缓存中已经缓存了delete from emp where id = ?;
语句,只需对id
赋值即可。
二、防止sql注入
-
SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。
-
输入正确的账号密码能登陆成功原因是对数据库表进行查询看是否输入用户名和密码在表里有对应的字段,有的话返回1,没有返回0.
-
输入错误的密码也能登录成功,原因是对sql语句进行了修改,如下是修改后的sql语句。修改后的sql语句1==1永真,所以能登录成功。
修改后的sql:
能登陆成功的原因是没有使用mybatis预编译sql,是将用户输入的用户名密码替换到sql中,导致对密码做手脚就可以登录成功。
使用预编译sql,你对密码做手脚就登陆失败:
你密码传过去数据库没有对应的字段,输入的账号密码代替?
,找的就是你输入的密码是否在表中存在