Mybatis常见面试题
  xG3Gf8m6XbKr 2023年12月22日 26 0
  1. ${} 与 #{} 区别

#{} :表示一个占位符号

通过 #{} 可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。

#{} 可以接收简单类型值或pojo属性值。

如果parameterType传输单个简单类型值, #{} 括号中名称随便写。

${} **:**表示拼接ql串

通过 ${} 可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,会出现sql注入问题。

${} 可以接收简单类型值或pojo属性值。

如果parameterType传输单个简单类型值, ${} 括号中只能是value。

  1. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?

在 Mybatis 中,每一个标签,都会被解析为一个MapperStatement 对象。

3.Mybatis如何进行分页?Mybatis分页插件的原理是什么?

  1. 使用Mybatis里面的第三方插件,
  2. 使用方式:在将要执行的sql语句之前使用分页插件:pageHelper.starPage(pageNum,pageSize);
  3. pageNum:表示的是页码,也就是说有多少页
  4. pageSize:就是一个页中显示几条数据(数量)
  5. 使用Mybatis插件(也称为拦截器)机制。对需要使用分页的功能进行增强,也就是重写sql语句,根据不同的数据生产不同的分页语句
  6. mysql会生产limit语句
  7. MyBatis中XML 映射文件中常见的标签

SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):

cache – 对给定命名空间的缓存配置。

cache-ref – 对其他命名空间缓存配置的引用。

resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。

parameterMap – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。

sql – 可被其他语句引用的可重用语句块。

insert – 映射插入语句

update – 映射更新语句

delete – 映射删除语句

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
xG3Gf8m6XbKr