云南营销型网站wordpress 网站维护
云南营销型网站,wordpress 网站维护,中山网站建设找阿 n 2,汕头市澄海区MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 获取参数值 这一基础
一. MYBATIS获取参数值的两种情况: 1.${} 实质:字符串的拼接 注解:${}使用的字符串拼接的方式拼接SQL语句, 所以, 如果其中出现了字符串… MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 获取参数值 这一基础
一. MYBATIS获取参数值的两种情况: 1.${} 实质:字符串的拼接 注解:${}使用的字符串拼接的方式拼接SQL语句, 所以, 如果其中出现了字符串类型的数据, 就需要我们手动的为其加上相应的单引号, 并且使用这种方式还有可能会造成SQL注入的问题 2.#{} 实质:占位符赋值 注解:使用这种方式获取参数值, 因为本身就是通过占位符获取对应的数据的, 所以在遇到字符串类型的数据的时候并不需要我们手动添加单引号, 其会自动的帮我们进行拼接, 并且不会造成SQL注入的情况
TIPS: SQL注入指的是输入某些特殊的值从而改变SQL语句的逻辑, 比如:
select * from table where username${username} and password${password} 正常输入下, 只要用户名以及密码可以匹配到数据库中的数据就可以登录上, 但是如果在输入password的时候输入:
123 || 11 在这种的情况下, 因为新加了逻辑符号 || 以及永远正确的 1 1 从而使得无论密码输入多少, 是否正确, 都会因为 || 以及11 的存在 使得其永远正确, 从而登录其中 二.获取参数值的五种情况 1:获取单个的参数值 比如根据用户名称获取数据 select idselectByNameselect * from tb_user where username#{username}/select 在这里, 我们使用# 通配符的形式获取, 但是, 里面的内容应该填什么呢? 多次尝试过后, 我们发现无论输入什么, 经过测试得到的结果都是一样的, 所以#{}里面的内容可以是任意的值, 这是因为在读取的时候是无法读取到我们的属性值的, 在测试的SQL语句当中我们就发现了获取的是一个 ? 由此可见源代码当中是无法获取我们输入的值的, 但是最好还是需要有一些意义的值
同样的, 另一种字符串的方式内部的值也可以是任意的值, 依旧是选择有意义的值最好 , 记得需要我们手动添加 select idselectByNameselect * from tb_user where username#{username}/select 2:获取多个参数值 添加数据当中添加新的用户账号以及相应的密码 如果跟第一种类似, 我们依旧输入有意义的值在占位符当中 insert idaddByNameAndPasswordinsert into tb_user values(#{username},#{password})/insert 经过测试, 就会报错, 并且错误提示出现在了我们所输入的获取参数值的名称上 这是因为在源代码当中, 我们获取这两个(多个)的参数的时候, 会自动的将其放在MAP集合当中, 我们必须根据对应的KEY来获取对应的VALUE才可以, 一般来讲, 默认的KEY按照顺序可以是[arg0, arg1....]或者是 [param1, param2] 都是按照顺序的 在本案例当中, 第一个username就应当是 arg0 或者是param1这两种形式, password就是另外两种, 并且在获取的时候两者可以交叉联合使用, 不会产生任何的影响
insert idaddByNameAndPasswordinsert into tb_user values(#{arg0},#{arg1})/insert//两者混和使用也是没有问题的, 但是需要注意不同的顺序对应的不同的值
insert idaddByNameAndPasswordinsert into tb_user values(#{arg0},#{param2})/insert 3:使用MAP集合的形式获取 在获取多个参数值的时候我们讲过, 实际上MABITS后台自动的帮我们设置了KEY值并且将数据传输了进去, 实际上我们也可以使用MAP的形式自己进行设置KEY值 在映射文件设置对应参数的时候, 我们就不需要思考选择哪一种方式了, 可以直接使用我们自己定义的KEY值获取对应的数值 在MAPPER当中 在对应得测试类当中如下 我们设置的KEY值如上, 设置了之后就可以在MAPPER得映射文件当中直接通过这些获取对应的值 4:使用USER设置获取 在添加数据得时候我们也可以选择使用向其中添加USER得方式获取对应的参数, 这里我们得参数获取得应当是对应的属性值 在对应的映射文件当中添加如下 insert idaddByUserinsert into tb_user values(#{username},#{password})
-- 在这里我们需要明确一点, 属性值实际上指的是我们在对应的实体类对象User当中SET以及GET方法在去除两者之后将第一个字母变为小写之后得数值, 可以说成员变量一半是属性值/insert 最后在测试类编写对应的方法即可 5:使用注解Params的方式获取对应的参数 使用注解的方式能够让我们自己手动的设置对应的MAP集合的KEY值, 从而不必再使用USER或者是其自带设置的KEY获取对应的参数值了, 在之后的开发当中, 我们也更加倾向使用这种防方式 在MAPPER当中 这这里, 我们所写的注解就相当于是我们自己设置了对应的KEY值, 在将其以MAP集合的形式保存后, 我们就可以使用这个注解获取对应的参数了 在对应的MAPPER映射文件当中直接输入对应注解即可
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89587.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!