Java面试准备-Mybatis篇

简介: Java面试准备-Mybatis篇

简单介绍下Mybatis


Mybatis是一个半ORM框架,它封装了JDBC,开发时只需要关注SQL本身,不需要再去做 驱动加载、创建连接等操作,这样使用起来更简洁,领活动够高。

Mybatis可以使用XML或者注解来配置原生信息,提高效率


Mybatis的优缺点


优点:

基于SQL语句编程,不会对应用程序有影响,SQL写在XML里面,解除SQL和代码的耦合,便于统一管理,XML支持多种标签,可复用。

只关注于SQL的业务逻辑编写,不关注驱动加载、创建连接等。

很好的和各种数据库兼容,如Mysql、Postgre等

能够和Spring很好的集成

缺点:

SQL编写工作量大,特别是字段多,关联表多时

SQL语句依赖数据库,数据库移植性差 ,不能随意更换数据库。


#{}和${}的区别是什么


#{}是预编译处理、${}是字符串替换

#{}可以有效的防止SQL注入,提高系统的安全性


当实体类中的属性名和表中的字段名不一样 ,怎么办 ?


在查询的时候,as 别名,保持和entity类中一致

通过resultMap 配置字段名和实体类名


Mybatis是如何将sql执行结果封装为目标对象并返回的?


使用XML标签,挨个定义数据库列名和实体类

使用SQL的别名,将列的别名写成实体属性

有了列名和属性名的映射关系后,Mybatis通过反射创建对象,同时通过反射给对象属性挨个赋值并返回,如果找不到对应关系的,是没办法进行赋值的


Mybatis是否支持延迟加载,延迟加载的原理是什么


可以配置是否启用延迟加载 lazyLoadingEnabled=true|false

原理是:使用CGlib创建目标对象的代理对象,当调用目标方法时,进入拦截方法。

当去获取一个属性值时,如果这个值为null,那么会单独发送实现保存好的SQL,去把这个属性查询出来,进行赋值,这个时候这个属性就有值了,这就是延迟加载的基本原理。


JDBC编程有哪些步骤


加载驱动 Class.forName(“com.mysql.jdbc.Driver”);

建立Connection连接

创建执行对象和执行语句

获取返回结果

关闭资源


Mybatis中用到哪些设计模式


代理模式:延迟加载CGlib

模板方法模式:Executor

工厂模式:SqlSessionFactory


MyBatis 中比如 UserMapper.java 是接口,为什么没有实现类还能调用


因为是使用JDK来实现动态代理、本质上调用的是 MapperProxy的invoke方法。

相关文章
|
21天前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
38 1
|
25天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
20 1
|
9天前
|
SQL 缓存 Java
Mybatis面试题
Mybatis面试题
|
25天前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
10天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
33 0
|
16天前
|
SQL Java 数据库连接
MyBatis常见面试题总结2
MyBatis常见面试题总结
17 0
|
16天前
|
SQL Java 数据库连接
MyBatis常见面试题总结1
MyBatis常见面试题总结
23 0
|
20天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
46 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
20天前
|
SQL Java 数据库连接
答案很详细的MyBatis面试题(含示例代码)
MyBatis是一种优秀的持久层框架,它是一个轻量级的、优化的、功能强大的Java持久层框架,它的设计理念是贴近SQL、便于使用、高效并且功能丰富。通过MyBatis的使用,开发者能够更加专注于业务逻辑的实现,而不用过多关注底层的数据库操作。MyBatis通过XML或注解的方式配置SQL映射文件,并将Java的POJO(Plain Old Java Object,普通的Java对象)与数据库中的记录进行映射,使得开发人员能够以面向对象的方式来操作数据库,同时兼顾了SQL的灵活性和效率。灵活的SQL映射。
105 0
|
24天前
|
Java 程序员 API
java1.8常考面试题
在Java 1.8版本中,引入了很多重要的新特性,这些特性常常成为面试的焦点
42 8