关于Mybatis注释开发的模糊查询语句
Mybatis开发方式1 :映射配置文件xxxMapper.xml
方式2 :评论
注意:只能使用一种开发方式。 不能混合
模糊查询SQL语句是注释方法的示例。
/**根据用户名模糊查询* @ param username * @ return *//@ select (' select * fromuserwhereusernamelike ) {username} fromuserwhereusernamelike (% $ { username } % )将报告错误并更改为(%${value}% )。 其中只有value @ select (' select * fromuserwhereusernamelikeconcat )、#{username}和' % ' ) listuserfinduserbyname )
1.CONCAT函数返回连接参数的字符串
2 .’% $ { value } % '固定符号法。 因为源代码指定要读取的key为value,传递的参数为简单类型的值,而${}只能为value
展开: #{}和${}的区别#{}${}是占位符,相当于? 指示sql拼接可以有效防止sql注入。 如果参数类型传输单个简单类型值,则#{}括号中的值或其他名称的值可以是通用的。 可以接收简单类型值或常规实体类(pojo )属性值。
关于sql注入:
也就是说,SQL语句的逻辑结构发生了变化,执行结果和开发人员的意图不同;
#{}基底采用预准备语句,可以预编译并过滤一些敏感字符。 通过在编译后传递的值上加双引号,可以有效防止sql注入${}与实际传递的值相匹配。 传递后,它将与sql语句进行字符串合并,无法防止sql注入问题。