mybatis核心技能点

1.对mybatis的理解 优点和缺点?
理解:mybatis是一个持久的,半orm的开源框架,它对jdbc进行了封装。主要实现的是输入输出的映射,sql语句写在xml里面,便于统一管理和维护。

Mybaits的优点:

  • 1.简单易学,比较容易上手
  • 2.sql语句写在xml里面,便于统一管理和维护。
  • 3.减少代码的冗余量
  • 4.对各种数据库的兼容性好
  • 5.能与spring很好的整合
  • 6.支持对象与数据库的ORM字段关系映射

缺点:
数据库的可移植性比较差
sql的书写量比较大

半orm:只能对输入输出结果进行性映射,不能对sql语句进行映射。

2.什么项目建议使用mybatis?

性能要求比较高,需求变化比较多的项目,例如互联网项目。

3.#{ } 和 ${ } 的区别
#{ }:相当于jdbc里面的 ‘?’ 占位符
KaTeX parse error: Expected 'EOF', got '#' at position 29: …接符 当传入的值是基本类型时,#̲{}中可以随便写,但{}中要写value,当是对象类型时,都要和对象的属性名对应

4.Mapper代理开发。
mapper代理开发,也就是接口开发。他有几个要求。

  1. 映射文件的namespace的值必须和接口文件的全路径名一致。
  2. 接口文件的方法名必须和映射文件的id一致。
  3. 接口方法的输入输出参数要和映射sql的输入输出参数相对应。
  4. 接口文件和映射文件同包切同名。

5.如何获取自增主键以及非自增主键?
MYSQL:
自增主键:通过selectKey标签的 LAST_INSERT_ID()方法获取

 <selectKey keyProperty="id" order="AFTER" resultType="Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>

//keyProperty:将查询到主键值设置到 parameterType 指定的对象的那个属性
//order:SELECT LAST_INSERT_ID() 执行顺序,相对于 insert 语句来说它的执行顺序
//resultType:指定 SELECTLAST_INSERT_ID() 的结果类型

非自增主键:通过selectKey标签的 UUID()获取

<selectKey  keyProperty="Id" order="BEFORE" resultType="String" >
    select UUID()
</selectKey>

Oracle使用序列来模拟自增

<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
	select EMPLOYEES_SEQ.nextval from dual
</selectKey> 

6.如何传递多个参数?

  1. 可以将参数封装成对象
  2. 可以将参数封装成map
  3. 使用注解

7.动态标签的作用以及有哪些?

  • 灵活性:代码比较灵活
  • 复用性:代码可以重复使用

Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。

8.级联查询有几种实现方式?
编写级联查询的sql语句,创建包装类。通过resultMap 配置association实现一对一的映射,
配置collection实现一对多的映射

9.mybatis缓存

  • 一级缓存:一级缓存是sqlsession级别的,默认是开启的
  • 二级缓存:二级缓存是mapper级别的,需要手动开启
  • 执行顺序:先查询一级缓存,如果没有。再去二级缓存查找,如果二级缓存没有,再去数据库查找。

10.延迟加载(懒加载)。

  • Mybatis仅支持association关联对象和collection关联集合的延迟加载,

  • 在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。

  • 原理:先查询一个表,然后根据结果 在查询另一个表的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码神附体

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

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

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

打赏作者

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

抵扣说明:

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

余额充值