• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MyBatis带参查询的方法详解

java 搞代码 4年前 (2022-01-05) 9次浏览 已收录 0个评论

这篇文章主要介绍了MyBatis带参查询的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

#{}占位符

类似于jdbc中通过PreparedStatement进行操作的方式, 会将sql语句中需要参数的位置使用?进行占位,后续由传进来的参数进行参数的绑定。?处绑定的都是值,不能指定表的列,转换成sql时表名会被当成字符串,会出错,防止sql注入。

 select username,age,password from 'tb_user'

简单类型参数

简单类型指的是: 基本数据类型, 包装类型, String, java.sql.*。当参数是简单类型时, MyBatis会忽略SQL语句中参数的个数和占位符的名称, 然后将参数进行自动绑定. parameterType属性可以定义参数的类型, 如果定义, 传参时要求参数类型必须和指定的类型一致, 否则抛出ClassCastException。

  select * from tb_users where id=#{id} 
 User user=sqlSession.selectOne("selBaseType",1);

Map类型参数

当参数是Map集合时, SQL语句中的#{}里应该写Map集合的key值,MyBatis会通过key只找到value然后进行参数绑定。如果key不存在, 不会报错,会使用null进行参数绑定。

  select * from tb_users where username=#{username} and password=#{password} 
 Map map=new HashMap(); map.put("username","zhangsan"); map.put("password","123456"); User user=sqlSession.selectOne("selByMap",map);

对象类型参数传递

当参数是对象类型时,SQL语句中的#{}里应该写对象的getter方法对应的属性名。当getter方法不存在时, 抛出异常。

  select * from tb_users where username=#{username} and password=#{password} 
 User user1=new User(); user1.setUsername("lisi"); user1.setPassword("123456"); User user=sqlSession.selectOne("selByObject",user1);

${}

类似于jdbc中通过Statement进行操作的方式, 会直接将传递的参数和SQL语句进行字符串的拼接。 一般当SQL语句结构不确定时使用。
当表名不确定,条件不确定,排序规则不确定的时候,不能使用#{},应该换做${}来源gaodai#ma#com搞*代#码网。对于简单数据类型,应尽量使用#{},避免错误。
${}需要加”传入的参数才能变成字符串,不然会被当成列名。

 select * from tb_users where username='${username}' and password='${password}'

如果${123}会当成整型数字替换占位,此时传入的参数无效。

以上就是MyBatis带参查询的方法详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MyBatis带参查询的方法详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址