美文网首页
2021-01-21

2021-01-21

作者: 你家门口的两朵云 | 来源:发表于2021-01-21 08:24 被阅读0次

1、#{}和${}的区别是什么?

答:{}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如{driver}会被静态替换为com.MySQL.jdbc.Driver。#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于param.getItem().getName()。


2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

答:还有很多其他的标签,<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中<sql>为sql片段标签,通过<include>标签引入sql片段,<selectKey>为不支持自增的主键生成策略标签。


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

答:Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,

Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。

Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。


8、MyBatis与Hibernate有什么不同?

相同点:屏蔽jdbc API的底层访问细节,使用我们不用与jdbc API打交道,就可以访问数据。

jdbc API编程流程固定,还将sql语句与Java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。

ibatis的好处:屏蔽jdbc API的底层访问细节;将sql语句与Java代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能,queryForList返回对象集合,用queryForObject返回单个对象;提供了自动将实体对象的属性传递给sql语句的参数。

Hibernate是一个全自动的orm映射工具,它可以自动生成sql语句,ibatis需要我们自己在xml配置文件中写sql语句,hibernate要比ibatis功能负责和强大很多。因为hibernate自动生成sql语句,我们无法控制该语句,我们就无法去写特定的高效率的sql。对于一些不太复杂的sql查询,hibernate可以很好帮我们完成,但是,对于特别复杂的查询,hibernate就很难适应了,这时候用ibatis就是不错的选择,因为ibatis还是由我们自己写sql语句。

相关文章

  • Soul 心灵奇旅 | touch the soul

    Sierra ZhaoMoive: Soul Update: 2021-01-21 故事梗概 一位对爵士音乐充满了...

  • 关于我们GU&WLZ

    2021-01-21更新 19:01给你发了视频电话,没接。 20:00给你发了消息,没回。 20:48给你打了电...

  • 自学英语这一年规划

    所谓自由,不是随心所欲,而是自我主宰。——康德 【阿豪日记】 18 2021-01-21 星期四 乌鲁木齐 自己的...

  • 英语口语,挺有意思

    幸福日志2021-01-21 周四 阴雨空气极差 最近看的英语彩图情境书,有句口语叫“What is eating...

  • 网课日记

    2021-01-21 星期四 天气晴 写给我正在上网课的孩子们 亲爱的孩子们: 你们好...

  • 2021-01-21 新变化

    【2021-01-21 日精进 第247天/1825】表现:9分 体验(事实,情绪,感受) 读冯唐第三章,今天有...

  • 如何过一天,就是如何过一生

    2021-01-21日精进第3天 |没有记录就没有发生 2021年的事业梦想个人目标描述:达成MDRT业绩目标。(...

  • 周四 2021-01-21 23:39 - 07:30 多云 0

    2021-1-21 没总结,后面补的一天周四 2021-01-21 23:39 - 07:30 多云 08h58m...

  • 我对几个重要问题的回答

    2021-01-21 下午3点半,精力下滑严重,有些困倦,脑子也有些迟钝,工作的那部分似乎带动不起来了,那么就展开...

  • 安全底线

    我怎么如此幸运-重生145-戴红霞(2021-01-21) 我怎么如此幸运-安全底线 1.我怎么如此幸运意想不到看...

网友评论

      本文标题:2021-01-21

      本文链接:https://www.haomeiwen.com/subject/tzhrzktx.html