# mybatis
**Repository Path**: szz12/mybatis
## Basic Information
- **Project Name**: mybatis
- **Description**: mybatis框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2017-06-09
- **Last Updated**: 2020-12-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
###入门
1. 引入jdbc,mybatis jar包
```
mysql
mysql-connector-java
5.1.41
org.mybatis
mybatis
3.4.4
```
2. 在src/main/resources中新建 mybatis-config.xml
这个文件中主要配置 数据库的连接信息,和映射文件所在的位置
3. 映射文件
mybatis为了顺利找到映射文件中 sql语句,对每个要执行的sql语句进行了标识,有两级:
1. namespace 类似于包名
2. id 同一个namespace中id必须唯一
使用namespace + id 就能找到sql语句
4. 写好映射文件之后,需要将映射文件的位置告诉 mybatis-config.xml
```
```
5. 编写测试用例
### 映射器接口
sqlSession中提供了getXXX方法来执行 mapper文件中的sql语句.因为 mapper中的sql语句是使用 namespace+ id的方式来标识的,所以每次调用getXXX方法的时候,都需要传递一个很长的名称,如果名称写错,只能在运行的时候发现错误。
所以MyBatis提供了映射器接口的方式。编写一个interface,这个interface的package 将于mapper文件中的namespace对应, interface中的 method于 mapper文件中的id对应
sqlSession通过getMapper(Class cls)方法可以获取一个映射器接口的对象,这个接口不用实现,MyBatis自动实现, 当接口对象的方法被调用的时候,MyBatis通过反射的方式 拿到 接口的package和调动的方法的名称,然后根据package +method 到 mapper文件中找 namespace+id,找到后执行sql语句。
这样我们在写代码的时候,程序代码的可读性增强, 而且在编译的时候也能发现一些错误
6. mapper文件中的resultType
每次在mapper文件中写resultType的时候,都需要写全名很麻烦,我们可以在 MyBatis的配置文件中 配置 resultType的别名,配置的时候,有两种方式:
A) 具体配置
```
```
B)指定包,MyBatis会将这个包下的所有的类自动做别名处理,规则是:去掉类的包名然后将首字母小写。PS: 3.4.4中首字母大小写都可以
```
```
MyBatis对系统中常用的类型,自动做了别名处理,具体查看[官方文档](http://www.mybatis.org/mybatis-3/zh/configuration.html#typeAliases)
### 代码生成器
使用MyBatis提供的代码生成器插件,可以生成:
1. 实体类
2. 映射器接口
3. 映射器xml文件
- pom配置maven插件
主要注意: 插件中需要指定 插件运行所需要的jdbc驱动,生成器配置文件的路径。 插件只是生成java源代码和xml文件,它是独立运行的
- 生成器插件的配置文件
生成器的代码是不需要发布的,所以一般在 src/test/resources中配置就可以了
1. 数据库连接信息
2. 实体类存放的位置和包名
3. 生成映射文件xml的包名和位置
4. 生成映射器接口(dao) 的包名和位置
5. 要生成哪些表以及表所对应的实体类的名称
- 运行代码生成器
1. 完整的命令 mvn mybatis-generator:generate
2. 如果在eclipse中运行,则直接运行目标: mybatis-generator:generate
### resultType与 resultMap
结果映射。它定义了 结果集字段与对象 property之间的映射关系
select查询的时候,需要将结果集转换为java对象。 xml映射文件中提供了 resultType 与 resultMap。 resultType会反射javaBean对象然后将结果集中的数据抽取出来set到javaBean中
此时如果 ResultSet中的columnName 与 JavaBean中的propertyName不一致,就无法填充了。 解决办法有两个:
1. 在select语句中使用as将 columnName进行重命名,重新命名后与JavaBean PropertyName 保持一致
2. 自己做映射,使用 resultMap。
需要注意的是 在