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将实体的每个属性做映射
暂时整理了这些,主要为了记录自己的理解,也许有些认识或者描述的有误差,望指正