【日常积累】Mybatis

Mybatis

Mybatis简介

是一个半ORM 对象关系映射,持久层框架,封装了JDBC,让开发者只需要关注SQL语句本身,无需处理
驱动加载,创建连接,创建statement等复杂的过程。让我们可以直接编写原生的sql,可以严格,自由的控制sql的执行性能。
Mybatis使用了SML来注释或者配置映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
通过xml文件或者注释的访视执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生产最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象返回(从执行sql到返回result的过程)。

Mybatis优点

  1. 1.基于sql变成,不会对应用程序或者数据库造成影响,SQl语句卸载xml文件里,便于统一管理,提供了xml标签,支持编写动态SQL语句,并且可以重用。
  2. 由于封装了JDBC,消除了JDBC大量冗余代码,无需手动开关连接。
  3. 能够很好地与各种数据库兼容(mysql,sqlserver)
  4. 能够与spring很好的集成
  5. 提供映射标签,支持对象与数据库的ORM字段关系映射,提供对象关系映射标签,支持对象关系组件维护。

Mybatis缺点

  1. SQL语句编写工作量大,复杂,对于开发人员的功力有一定的要求
  2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

问题

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

#{}是预编译处理,在处理它时,会将sql中的#{}替换为?号,调研用PreparedStatement的set方法来赋值,#{}能够有效防止sql注入,提高系统的安全性
${}是字符串替换mybatis处理 ${}时会把他替换为变量的值。

2. 、Xml 映射文件中,除了常见的 select|insert|updae|delete

标签之外,还有哪些标签?

还有 结果集映射,参数映射,,,为不支持自增的逐渐生成策略标签

3. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

不同的Xml映射文件,如果配置了namespace,那么id可以重复,如果没有配置,则不能重复

4. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动

的区别在哪里?

Hibernate属于全自动ORM映射工具,使用Hebernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以他是全自动的,而mybatis在查询关联对象或者关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。

5. 什么是 MyBatis 的接口绑定?有哪些实现方式?

接口绑定就是在mybatis中的定义任意接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口就可以了,比起原来的sqlsession提供的方法可以有更加灵活的选择和设置。有两种方式,一是通过注解绑定,就是在接口加上@Select,@Update 等注解,里面包含sql语句来绑定(用在sql语句比较简单的时候);另一种则是通过xml里写得sql来绑定,这种情况下,需要制定xml映射文件里的namespace必须为接口的全路径明。

6. 使用 MyBatis 的 mapper 接口调用时有哪些要求?

1.Mapper接口的方法名(dao层中的)要与xml里定义的每个sql的id相同
2.Mapper接口的输入参数类型(dao层中的)要与xml里定义的每个sql的parameterType相同
3.Mapper接口的输出参数类型(dao层中的)要与xml里定义的每个resultMap的id相同
4.xml文件中的namespace是mapper接口的类路径(dao)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顶子哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值