mybatis面试

1、什么是mybatis框架?

持久层框架
支持定制sql
支持存储过程和高级映射orm
封装jdbc
sql和代码分离

2、什么是orm

实体关系映射
先建立实体类和数据库表之间的映射以及表关系映射。
通过映射,将表的操作转为对象的操作。
详细:
对象的操作,通过映射转为表操作的sql;
将结果集,通过映射转为实体对象。

3、什么是数据的持久化?

将程序(内存)中的数据和数据库相互转换,数据在瞬时状态和持久状态之间转换。
通俗,数据库的CURD。

4、#和$区别

#传入的参数在SQL中显示为字符串(当成一个字符串),会对自动传入的数据加一个双引号。(预编译)(PreparedStatement)
$传入的参数在SqL中直接显示为传入的值(Statement)
#可以防止SQL注入的风险(语句的拼接);但$无法防止Sql注入。
$方式一般用于传入数据库对象,例如传入表名

5、resultType和resultMap区别

resultType实体映射
resultMap手动映射

6、什么是数据库连接池?有哪些常见的?

为了避免频繁地创建数据库连接,提出了数据库连接池技术。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,当应用程序访问数据库时并不是直接创建Connection,而是向连接池“申请”一个Connection。如果连接池中有空闲的Connection,则将其返回,否则创建新的Connection。使用完毕后,连接池会将该Connection回收,并交付其他的线程使用,以减少创建和断开数据库连接的次数,提高数据库的访问效率。

druid、c3p0,dbcp==

7、什么是动态sql?有哪些常用的标签?使用场景?

根据不同的条件,组合sql语句。
标签:
where
if
when
set
forEach
使用场景:多条件查询

8、多表查询的方式

(1)连接查询
(2)关联查询(嵌套查询)

9、表之间的关系

(1)一对一
(2)一对多
(3)多对多

10、数据库中,多表查询有哪些?

(1)内连接查询
(2)外连接查询
左外连接
右外连接
(3)自查询
(4)子查询
(5)笛卡尔积

11、mybatis的执行流程

读取配置文件,
加载映射,
创建sqlsessionFactory
创建sqlsession
创建Executor
创建mapperdStatement
输入映射
执行sql
输出映射

12、缓存?失效?

原文
一级缓存:session级别
默认开启
二级缓存:sessionFactory级别
手动开启
失效:
(1)、进行增删改操作,清除对应的一级缓存和二级缓存。
(2)、Session flush或close,清除对应的一级缓存。

13、延迟加载(懒加载)策略

关联查询中,assocation,collection
如果没有访问这些数据,先不加载

14、mybatis有哪些常用的注解

@Select
@Update
@Insert
@Delete

@SelectProvider
@UpdateProvider
@InsertProvider
@DeleteProvider

@Param

@Mapper

15、mybatis日志

支持多种日志框架
默认按照顺序查找 slf4j>…
也可以指定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值