图文网站模版,北京王府井半岛酒店,wordpress主动推送,wordpress驳回评论目录
基础操作
删除
预编译SQL
增、改、查
自动封装 基础操作
环境准备 删除
根据主键动态删除数据#xff1a;使用了mybatis中的参数占位符#{ }#xff0c;里面是传进去的参数。 单元测试#xff1a; 另外#xff0c;这个方法是有返回值的#xff0c;返回这次操作…目录
基础操作
删除
预编译SQL
增、改、查
自动封装 基础操作
环境准备 删除
根据主键动态删除数据使用了mybatis中的参数占位符#{ }里面是传进去的参数。 单元测试 另外这个方法是有返回值的返回这次操作的数据数量比如删除了一条记录就返回1以此类推。但一般没什么用所以使用void不返回值。可以通过添加配置信息输出mybatis的日志进行观察。 以下是mybatis的输出日志是参数占位符替代了#{ }传进参数16这里实际上并没有16这条数据因此操作数据的数量updatas为0。 这条SQL语句叫做预编译SQL那为什么不直接将16拼接在sql语句中呢
预编译SQL
因为采用预编译SQL有两大优势 性能提升预编译SQL语句在第一次执行时会被编译之后如果再次使用相同的SQL语句就不需要重新编译可以直接执行这可以显著提高执行效率。 安全性增强使用预编译SQL可以有效防止SQL注入攻击因为SQL语句和参数是分开处理的。参数在执行时被传递给预编译的语句而不是作为SQL语句的一部分这样可以避免恶意用户通过修改参数来执行非法SQL操作。 SQL注入是通过操作输入的数据来修改事先定义好的SQL语句以达到执行代码对服务器进行攻击的方法。以下为例子
实际上登录功能的账户密码校验就是查询操作查询数据库中是否有账号和密码的数据存在如果都存在就可以登录如果不存在就返回错误信息。
存在账号张无忌zhangwuji并且密码为111可以登录反之就不能登录。 神奇的是以下的账号是随便输入的但密码需要刻意写成这种形式。也可以成功登录 因为这段密码把sql语句的语义改写了此时登录只需要‘1’‘1’而这是始终成立的。如下 这种拼接的形式就有可能导致被SQL注入因此就要采用预编译传参的形式进行规避。
参数占位符的区别面试题#和$的占位符区别 增、改、查
和删除一模一样只是需要传递的参数太多而这些参数都封装在Emp对象中直接传递这个对象就行了。该方法也有返回值和删除一样就void不返回即可。 主键返回在数据添加成功后如果需要立即获取插入这条数据的主键需要添加options注解 更新
数据一般不会更新主键因此我们根据主键去修改数据。尾部增加一个id条件对这个id的数据进行修改其他的和删除新增一样。 查询
同样根据id查询员工 条件查询这里用了like模糊搜索和concat函数进行字符拼接以避免SQL注入。 自动封装
绿色部分会自动封装到emp对象而红色不能自动封装 三个解决方法