Java面试题---MyBatis
# MyBatis
author: “\U0001F336 辣椒炒饭”
date: 2023-03-23 23:37:02
tags:
# 什么是 MyBatis
一个可以自定义 SQL,存储过程和高级映射的持久层框架。
# MyBatis 的缓存讲一下。
MyBatis 的缓存分为一级缓存还有二级缓存,一级的缓存放在 session 中,二级缓存放在命名空间里。使用二级缓存属性类需要实现 Serializable 序列化接口。
# MyBatis 的好处是。
- 将 sql 语句从 Java 源程序中独立出来,放在单独二点 XML 文件中编写,更加有利于维护。
- MyBatis 封装了底层 JDBC API 的调用细节,而且可以将结果转化为 JavaBean 对象,简化了 JAVA 数据库编程的重复工作。
# MyBatis 的缺点是。
SQL 语句的编写工作量比较大,特别是字段多,关联的表比较多的时候,对开发人员的 SQL 语句要求比较高。
SQL 语句依赖数据库,会使数据库移植性差,不可以随便更改数据库。
# {} 和 ${} 的区别。
- #{} 是预编译处理
- ${} 是字符串替换
MyBatis 在处理 #{} 时,会将 sql 中的 #{} 替换为?。并且调用 PreparedStatement 的 set 方法赋值。
MyBatis 在处理 {} 替换为变量的值。
使用 #{} 可以有效的防止 SQL 注入,提高系统安全性。
#{} 一般用于 SQL 语句,${} 一般用于配置文件
注意点:#{} 不适用于排序,分组、分页
# navicat 中文乱码 输入中文 显示问号(???)
添加 useUnicode=true&characterEncoding=utf8
jdbc:mysql://localhost:3306/mysql-plus-ggkt?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8