# MyBatis
author: “\U0001F336 辣椒炒饭”
date: 2023-03-23 23:37:02
tags:


# 什么是 MyBatis

一个可以自定义 SQL,存储过程和高级映射的持久层框架。

# MyBatis 的缓存讲一下。

MyBatis 的缓存分为一级缓存还有二级缓存,一级的缓存放在 session 中,二级缓存放在命名空间里。使用二级缓存属性类需要实现 Serializable 序列化接口。

# MyBatis 的好处是。

  1. 将 sql 语句从 Java 源程序中独立出来,放在单独二点 XML 文件中编写,更加有利于维护。
  2. MyBatis 封装了底层 JDBC API 的调用细节,而且可以将结果转化为 JavaBean 对象,简化了 JAVA 数据库编程的重复工作。

# MyBatis 的缺点是。

SQL 语句的编写工作量比较大,特别是字段多,关联的表比较多的时候,对开发人员的 SQL 语句要求比较高。

SQL 语句依赖数据库,会使数据库移植性差,不可以随便更改数据库。

# {} 和 ${} 的区别。

  1. #{} 是预编译处理
  2. ${} 是字符串替换

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