Mybatis

1、mybatis是什么?

是一个半自动ORM(对象关系映射)框架,内部封装了JDBC,开发时只需要关注SQL就可以,不需要花费精力去处理数据库驱动、数据库连接等过程。

2、mybatis优缺点?

优点: ①因为内置JDBC,所以减少了大量的代码冗余。 ②基于SQL编程,很灵活,SQL写在xml文件里,与程序解耦,便于管理。 ③兼容各种数据库。 ④提供映射标签,对象和数据库字段的相互映射。 缺点: ①SQL的编写量很大的时候,对开发人员的SQL功底有要求。 ②SQL依赖数据库,导致数据库移植性差,不能随意更换数据库。

3、#{}和${}的区别?

#{}:就相当于标识符 ?,可以有效解决SQL注入问题。

${}:相当于字符串拼接,直接拼接,会有sql注入问题。

4、mybatis如何实现分页?
  • 自己编写分页: 获取数据的list,然后编写代码进行分页。

  • 利用sql进行分页: 比如mysql的limit。

  • RowBounds参数实现分页

复制代码
//service层调用dao层接口,start开始的条数,limit每页几条
public List<RoleBean> queryByPage(int start, int limit) {
    return roleDao.queryUsersByPage(new RowBounds(start, limit));
}
​
//dao层接口加入RowBounds参数,就可以实现分页
public List<UserBean> queryUsersByPage(RowBounds rowBounds);
5、mybatis支持延迟加载(懒加载)吗?原理是什么?

支持

支持的对象: Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。 概念: 延迟加载的原理是在查询时只加载部分数据,当需要访问未加载的数据时再进行加载。这样可以减少查询所需的时间和资源,提高系统性能。 原理: MyBatis实现延迟加载的方式是使用CGLIB多态代理对象,在访问未加载的数据时触发代理对象的方法,从而进行数据的加载。延迟加载可以通过配置文件(lazyLoadingEnabled配置启用或禁用延迟加载)或注解(@Lazy)来实现。

6、mybatis的一级缓存+二级缓存有了解吗?

MyBatis的一级缓存是基于PerpetualCache的HashMap本地缓存,作用域为Session,默认开启。二级缓存需要单独开启,作用域为Namespace或mapper,默认也是采用PerpetualCache的HashMap存储。

7、Mybatis的一级缓存、二级缓存什么时候会清理缓存中的数据?

当作用域(一级缓存Session/二级缓存Namespaces)进行了新增、修改、删除操作后,默认该作用域下所有select中的缓存将被清空。

8、mybatis的执行流程?
  1. 读取MyBatis配置文件mybatis-config.xml

  2. 构造会话工厂SqlSessionFactory

  3. 会话工厂创建SqlSession对象。

  4. 操作数据库的接口,Executor执行器。

  5. Executor执行方法中的MappedStatement参数。

  6. 输入参数映射。

  7. 输出结果映射。

相关推荐
qq_25183645728 分钟前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong1 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源
曹牧1 小时前
Java集合框架:List、ArrayList、Map 和 HashMap
java
顾城猿1 小时前
STOMP 协议
java
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
需要8262 小时前
MySQL 索引 B+ 树与“查询为什么变慢了
java·spring boot·spring·spring cloud·tomcat
一 乐2 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
万年咸鱼2 小时前
编译Java源程序
java
Wang's Blog3 小时前
Java 项目实战: 外卖平台-删除分类的关联校验与自定义业务异常
java·服务器·项目开发
hai_android3 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin