1、什么是MyBatis
1.MyBatis就是一个来封装jdbc的持久层框架,它和hibernate都属于ORM层,但是具体的说,hibernate是一个完全ORM框架,而MyBatis是一个不完全的ORM框架。
2.MyBatis让程序员只关注sql本身,而不需要去关注如连接的创建、statement的创建等操作。
3.MyBatis会将输入参数、输出结果进行映射。
2、MyBatis的框架原理
2.1分析结论
1.Mybatis配置文件,包括MyBatis全局配置文件和MyBatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射配置文件配置了SQL执行相关的信息。
2.MyBatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,既会话工厂。
3.通过SqlSessionFactory,可以创建SqlSession既会话。MyBatis是通过SqlSession来操作数据库的。
4.SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
5.Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、hashMap集合对象、POJO对象类型。
3、入门程序
3.1需求
3.2环境准备
idk
ide
MyBatis
数据库
3.3下载MyBatis
MyBatis的代码由github.com管理,下载地址:
3.4数据库脚本初始化
3.5工程搭建
3.6代码实现
3.6.1创建PO类
3.6.2创建全局配置文件
在config目录下,创建SqlMapConfig.xml文件,该名称不是固定不变的。
需求开发(根据用户ID查询用户信息)
3.6.3映射文件
在config目录下,创建User.xml(这种命名规范是由ibatis遗留下来的)
3.6.4在全局配置文件中加载映射文件
3.6.5测试
4、开发方式
4.1MyBatis开发dao的方式(既开发dao接口和dao实现类)
SqlSessionFactory,它的生命周期,应该是应用范围,全局范围只有一个工厂,使用单例模式来实现这个功能。与spring集成之后,由spring来对其进行单例管理。
SqlSession,它内部含有一块数据区域,存在线程不安全的问题,所以应该将sqlsession声明到方法内部。
测试
4.2Mapper代理的开发方式(既开发mapper接口(相当于dao接口))
Mapper代理的开发规范
1.mapper接口的全限定名要和mapper映射文件的namespace值一致
2.mapper接口的方法名称要和mapper映射文件的statement的id一致
3.mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个
4.mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致
Mapper接口
Mapper映射文件
加载映射文件
测试
5、MyBatis整合spring
1.数据信息交给spring管理
2.SqlSessionFactory交给spring进行单例管理
3.由spring来管理原始dao的实现类或者mapper代理的代理类
工程搭建:
Mysql的驱动包
MyBatis的核心包和依赖包
MyBatis和spring的整合包
spring的包
dbcp数据库连接池包
https://blog.csdn.net/qq_22583741/article/details/79450343