java面试题(MyBatis)

news/2024/10/18 7:48:26/

目录

1.什么是MyBatis?

2.MyBatis存在哪些优缺点?

3.MyBatis中#{}和${}的区别

4.MyBatis 有哪几种 SQL 编写形式

5.MyBatis 怎么实现分页

6.MyBatis 如何防止 SQL 注入

7.MyBatis 延迟加载

8.MyBatis 中的缓存机制有啥用?

9.MyBatis 一级缓存和二级缓存的区别

10.MyBatis 都有哪些 Executor 执行器?它们之间的区别是什么?

11.MyBatis 如何指定Executor 执行器

12.为什么说MyBatis 是半自动的ORM映射工具?与全自动的区别?

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

14.resultType和resultMap的区别?

15.MyBatis 动态sql有什么用?执行原理?有哪些动态sql?


1.什么是MyBatis?

        MyBatis是一个优秀的持久层框架,半自动的ORM映射工具,对jdbc进行了封装

2.MyBatis存在哪些优缺点?

优点:

        1.基于sql语句编程,相当灵活,不会对应用程序造成影响

        2.能和各种数据库兼容

        3.能和spring很好的集成

        4.提供映射标签

缺点:

        1.sql语句编写的工程量大

        2.sql语句依赖于数据库,导致数据库移植性差

3.MyBatis中#{}和${}的区别

        1.#{}是占位符,${}字符串替换,是拼接符

        2.MyBatis在处理#{}时会替换成?号,处理${}时会替换成变量的值

        3.使用#{}可以预防sql注入,提高安全性

4.MyBatis 有哪几种 SQL 编写形式

支持三种

        1.mapper文件中配置sql

        2.注解式sql

        3.通过@SelectProvider来声明sql提供类

5.MyBatis 怎么实现分页

        1.使用sql的limit做分页

        2.使用插件

        3.使用拦截器、

6.MyBatis 如何防止 SQL 注入

        1.使用#{}来设置参数

        2.正则表达式过滤非法字符

7.MyBatis 延迟加载

延迟加载:就是在需要用到数据时才进行加载不需要用到数据时就不加载数据。延迟加载也称懒加载;

        1.可配置局部懒加载

        2.可配置全局懒加载

8.MyBatis 中的缓存机制有啥用?

        做服务器的进程内部缓存,提高查询效率,降低数据库访问频率。Mybatis有三种缓存,一级缓存、二级缓存、第三方缓存EhCache,一级缓存时默认开启的,作用域时SqlSession。二级缓存默认关闭需要在配置中使用enableCache="true"开启,二级缓存时namespace作用域的。第三方缓存需要引入额外Jar包,并且在配置中开启二级缓存开关,配置第三方缓存的核心类。

9.MyBatis 一级缓存和二级缓存的区别

        1.一级缓存默认开启,二级缓存手动开启

        2.一级缓存作用域是SqlSession级别,二级缓存是全局的

10.MyBatis 都有哪些 Executor 执行器?它们之间的区别是什么?

MyBatis 有三种基本的 Executor 执行器:

        1.SimpleExecutor: 每执行一次 update 或 select,就开启一个 Statement 对象,用完立刻关闭 Statement 对象

        2.ReuseExecutor:执行 update 或 select,以 sql 作为 key 查找 Statement 对象,存在就使用,不存在就创建,用完后,不关闭 Statement 对象,可重复使用

        3.BatchExecutor:执行 update(没有 select,JDBC 批处理不支持 select),将所有 sql 都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个 Statement 对象

11.MyBatis 如何指定Executor 执行器

        在 MyBatis 配置文件中,可以指定默认的 ExecutorType 执行器类型,也可以手动给 DefaultSqlSessionFactory 的创建 SqlSession 的方法传递 ExecutorType 类型参数

12.为什么说MyBatis 是半自动的ORM映射工具?与全自动的区别?

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

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

        不同的Xml映射文件,如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id不能重复(原因就是namespace+id是作为Map的key使用的,如果没有namespace,就剩下id,那么,id重复会导致数据互相覆盖。有了namespace,自然id就可以重复,namespace不同,namespace+id自然也就不同)

14.resultType和resultMap的区别?

        类的名字和数据库相同时,可以直接设置resultType参数为Pojo类。若不同,需要设置resultMap将结果名字和Pojo名字进行转换

15.MyBatis 动态sql有什么用?执行原理?有哪些动态sql?

        MyBatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql。
执行原理是根据表达式的值完成逻辑判断并动态拼接 sql 的功能。
MyBatis提供了9种动态sql标签:trim、where、set、foreach、if、choose、when、otherwise、bind。


http://www.ppmy.cn/news/86576.html

相关文章

【数据结构】--单链表力扣面试题①移除链表元素

题述: 给你一个链表的头结点head和一个整数val,请你删除链表中所有满足Node.val val的节点,并返回新的头结点。 思考: 为什么说要返回新的头结点,因为你删除的可能存在把原来的头结点删除的情况,这时就需要有新的头结…

Spring-IOC是什么

Spring-IOC是什么 Spring-IOC是什么IOC是什么 Spring-IOC是什么 Spring-IOC是Spring框架的核心,是一个容器,它负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 IOC是什么 控制反转,指的是将对象的控制权交给Spring容器&a…

自动构建之Makefile

链接: 自动构建之CMake Makefile Makefile是用于自动化构建软件项目的工具,Makefile的优点是简单、直接,可以直接使用make工具进行构建。但是,Makefile通常需要手动编写和维护,可能会导致跨平台和跨编译器的兼容性问题。 Makef…

adb 命令速查(下)

ADB 关于APP安装、调试和monkey压力测试 作者:炭烤毛蛋 ,查看博主了解更多。 提示:承接上篇《adb 命令速查(中)》,本文将 文章目录 ADB 关于APP安装、调试和monkey压力测试7 adb 关于 apk 的相关操作7.1 安装 apk普通安装带有命…

虹科HiveMQ与MQTT:构建互联汽车的新架构

前言 随着汽车的互联程度越来越高,汽车制造商和互联汽车平台提供商通过使用物联网技术,提供新服务并从车辆收集有价值的遥测数据,以此来增加营收。从高效的车队管理和汽车共享到预测性维护和高级驾驶员辅助系统,未来移动出行的可…

uniapp内使用 mescroll

前言 在使用uniapp开发项目的过程中,在很多场景里都需要下拉刷新和上拉加载,而 mescroll.js 则是一个非常精致的下拉刷新和上拉加载 js 框架。 官网地址:mescroll 介绍 mescroll.js 是在 H5端 运行的下拉刷新和上拉加载插件,时…

windows解决python安装django架构没有django-admin命令

目录 一.尝试安装与配置 1.直接pip命令安装 2.用pycharm测试 3.官网下包安装 二.解决 1.找到django安装的路径 2.配置系统变量 3.测试创建项目 3.1.执行访问页面 3.2.解决 3.3.继续测试 4.pycharm打开 一.尝试安装与配置 1.直接pip命令安装 pip install django dja…

Java 基础语法学习笔记

目录 一、Java语言概述 1.1 Java 的出现 1.2 Java的主要特性 1.3 Java语言的特点 1.4 Java语言的核心机制 1.5 Java语言的环境搭建 二、第一个Java程序 2.1 需要注意的问题 2.2 注释(comment) 2.3 注意点: 2.4 Java API 的文档 2.5 第一个 Jav…