在前面内容的基础上,我们在UserDao中编写一个方法
在UserMappper中编写
编写测试类,这个测试类的查询条件全部不为空
查看结果
我们设置部分条件是空的,例如用户角色为空
我们修改下测试部分的代码
运行测试代码我们发现
那么这个结果是否正确呢?我们查看日志信息
将查询语句摘取出来,里面的问号改成我们的查询数据,在数据库命令行中执行
发现是有数据的,很显然我们的代码有问题
这是因为在进行多条件查询的是否,用户并不一定会完整地输入所有的查询条件,这个时候就会有漏洞出现。
我们修改UserMappper.xml
我们再查看测试结果,符合我们的预想
我们改造上一个例子,在UserDao中添加如下方法
编写UserMapper.xml
编写测试方法
查看运行结果
发现有错误的信息,具体的错误信息是语句语法错误,其中
select * from s_user where and u.userRole=?
这句话很明显的错误。为了解决这个问题同样需要智能处理and和where。
再次查看运行结果
结果是对的 空指针的异常是因为我们没有查询role,同时也没做处理,我们做一下更改