文章目录
一、ORM框架
MyBatis属于ORM(对象关系映射Object Relational Mapping)框架。
- O->R
把一个java对象保存到数据库中的一行记录 - R->O
把数据库里面的一行记录封装成一个java对象

二、MyBatis框架运行流程
- MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
- MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象,实际就是普通的JavaBean)为数据库中的记录。

- 1、mybatis配置:
SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载 - 2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
- 3、由会话工厂创建SqlSession即会话,操作数据库需要通过SqlSession进行
- 4、mybatis 底层自定义了Executor执行器接口 操作数据库,Executor接口有两个实现,一个是基本执行器,一个是缓存执行器
- 5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped Statement的id
- 6、Mapped Statement 对sql执行输入参数进行定义,包括HashMap、基本类型、POJO,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数
- 7、Mapped Statement 对sql执行输出结构进行定义,包括HashMap、基本类型、POJO,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程
三、MyBatis运行
1、配置文件
1.1 全局配置文件.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 下划线字段对应实体类驼峰命名 数据库表:banji_id 映射到类里面:banjiId -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<!--
<typeAlias alias="Student" type="com.situ.mybatis.entity.Student"/>
<typeAlias alias="Banji" type="com.situ.mybatis.entity.Banji"/> -->
<!-- 扫描包里面的类,批量起别名,别名即类名,不区分大小写 -->
<package name="com.study.mybatis.entity"/>
</typeAliases>
<environments default="development">
<environment id="development">
<!-- 使用JDBC的事物管理 -->
<transactionManager type="JDBC"/>
<!-- 配饰数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/java?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="com/study/mybatis/entity/StudentMapper.xml"/>
<mapper resource="com/study/mybatis/entity/BanjiMapper.xml"/>
</mappers>
</configuration>
1.2 sql映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="student">
<!--映射 数据库中表的属性名改变(如name->student_name),将改变的名称进行映射-->
<!--使用映射,后序resultType需要更改-->
<resultMap id="studentMap" type="Student">
<!--id和result没有区别, id用来表示主键-->
<!--column数据库中字段的名称,也可能是起的别名-->
<!--property对应表-->
<id column="id" property="id"/>
<result column="student_name" property="name"/> <!--单表情况下只写这条也没区别-->
<result column="age" property="age"/>
<result column="gender" property