mybatis面试

1.mybatis插入数据返回主键配置
UseGenerateKeys = true
<settings>
    <setting name="cacheEnable" value="true" />
</settings>

    在mapper映射文件中加入以下配置

2.mybatis中$和#的区别

select * from student where Tel = #{stuTel}

stuTel传的是参数,表示select * from student where Tel = '123456'

select * from student order by ${stuName}

stuName相当于变量,表示 select * from student order by stuName

总结:${}是变量占位符 #{}是参数占位符;#能够防止sql注入;一般能用#就不要用$。

3.mybatis的缓存机制

1)mybatis提供了查询缓存来缓存数据,分为一级缓存和二级缓存;

2)一级缓存是sqlsession级别的,只要用的是同一个sqlsession,查询会被缓存,执行其他操作的时候缓存会被清空,默认开启一级缓存;

3)二级缓存是mapper级别的,作用域是mapper同一个namespace文件,不同的sqlsession访问同一个查询的时候第二个sqlsession会使用第一次的缓存,mybatis默认没有开启二级缓存,需要配置

4.什么是延迟加载

比如学生类,有班级关联对象属性,当我们要查询学生信息的时候,不查班级信息,当使用班级信息的时候才使用,通常是一对一和一对多的时候用到

5.mybatis映射文件中有哪些标签

常用:select insert delete update

扩展丰富使用:resultMap selectKey parameterMap sql include

动态sql使用:if when 等

6.mybatis框架的原理(简述)

Mapper接口注入到service层进而serveice层操作控制层实现,mapper接口并没有实现类,而是通过动态代理类实现实例,Mapper接口通过全限定类名和方法名与mapper映射文件中的配置匹配来进行操作数据的

7.当实体的属性和表的字段不一样的时候怎么操作

1)在sql语句中起别名

2)使用resultmap将实体的每个属性做映射

暂时整理了这些,主要为了记录自己的理解,也许有些认识或者描述的有误差,望指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dong__xue

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

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

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

打赏作者

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

抵扣说明:

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

余额充值