# MybatisStudy
**Repository Path**: ouyangjunfei/mybatis-study
## Basic Information
- **Project Name**: MybatisStudy
- **Description**: 学习狂神的MyBatis3视频的项目代码
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-08-19
- **Last Updated**: 2021-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, MyBatis
## README
# MyBatis学习记录
*参考视频*
[【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂](https://www.bilibili.com/video/BV1NE411Q7Nx)
## 资源
[MyBatis3中文官网](https://mybatis.org/mybatis-3/zh/index.html)
以及B站视频下方**评论区**
[Maven仓库官网](https://mvnrepository.com/)
## 项目环境
- Java : 1.8 (要求)
- IDEA : 2020.3 Ultimate (建议)
- Maven : Bundled (3.6.3)
- MySQL : 5.7.31 (建议使用5.7.x)
- pom.xml的各项依赖没有特别需要注意的,使用最新或者较新版本都可以
- 使用IDEA的Database功能需要下载指定的Driver,这里我使用的是8.x.x的Driver,此处非必须配置,与项目无关
MySQL数据库如果用8.x.x版本涉及到配置参数URL的修改
## 模块内容
1. 基本的CRUD,没有配置别名,没有扫包,数据库参数写定于`mybatis-config.xml`文件
2. 在`mybatis-config.xml`中配置别名,同时从`config.properties`文件中获取数据库参数
3. 引入`resultMap`解决数据库列名与实体类字段名不一致的问题
4. 为MyBatis配置日志工厂,初学`log4j`,配置默认日志
```xml
```
5. 抛弃`***Mapper.xml`,改用注解的形式编写SQL语句
6. 使用扫包的方式添加`***Mapper.xml`文件;学生实体类有Teacher字段关联一个老师,需要查询所有老师及其教的学生,在`resultMap`中使用`association`
标签映射学生实体类中的老师字段,需要指定`javaType`,没有查询结果的字段值为空
```xml
```
7. 学生实体类用id关联一个老师,需要查询某个老师的所有学生,在`resultMap`中使用`collection`标签映射,需要用`ofType`指定泛型中的Java实体类
```xml
```
8. 使用MyBatis提供的数据库列名下划线方式自动转换驼峰式实体类字段名,学习``、``、``、`//`和``
标签用于构建动态SQL;使用`concat`进行模糊查询防止SQL注入
```xml
update mybatis.blog
title = #{title},
author = #{author}
where id = #{id}
```
9. 开启MyBatis二级缓存
```xml
```