学习目标:
- 了解什么是框架,理解MyBatis是什么;
- 学会使用MyBatis;
- 学会创建自己的MyBatis。
学习内容:
一、mybatis入门
1、什么是框架?
- 软件开发中的一套解决方案,提高开发效率
2、三层架构
- 表现层:用于展示数据
- 业务层:处理业务需求
- 持久层:和数据库交互(mybatis持久层框架)
3、持久层技术解决方案
- JDBC技术:
- Connection
- PreparedStatement
- ResultSet
- Spring的JDBCTemplate
- Spring中对jdbc的简单封装
- Apache的JDBCUtils
- 对jdbc的简单封装
- 以上这些都不是框架
- jdbc是规范
- Spring的JDBCTemplate和Apache的JDBCUtils都只是工具类
二、mybatis概述
1、mybatis是一个持久层框架,用java编写的
2、封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,无需关注注册驱动,创建连接等繁杂过程
3、使用ORM思想实现结果集的封装
4、ORM:Object Relational Mapping 对象关系映射
- 把数据库表和实体类以及实体类的属性对应起来,可以操作实体类就实现操作数据库表
- user User
- id userId
- user_name userName
- 实体类中的属性和数据库表中的字段名称一致
- user User
- id id
- user_name user_name
三、mybatis环境搭建
1、创建Maven工程并导入坐标
2、创建实体类和dao接口
3、创建mybatis的主配置文件SqlMapConfig.xml
4、创建映射配置文件UserDao.xml
5、注意事项
- 创建UserDao.xml和UserDao.java时名称保持一致,在mybatis中把持久层的操作接口名称和
映射文件名称也叫做:Mapper,所以UserDao和UserMapper是一样的; - 在idea中创建目录时和包是不一样的,
包在创建时:com.xuefeng.dao是三级结构
目录在创建时:com.xuefeng.dao是一级目录 - mybatis的映射配置文件位置必须和dao接口的包结构相同
- 映射配置文件的Mapper标签namespace属性的取值必须是dao接口的全限定类名
- 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
- 当遵从后三条限制,开发中就无需在写dao实现类
四、mybatis入门案例
1、mybatis基于xml配置文件的入门
- 读取配置文件
- 创建SqlSessionFactory工厂
- 使用工厂生产SQLSession对象
- 使用SQLSession创建dao接口的代理对象
- 使用代理对象执行方法
- 释放资源
2、注意事项
- 配置查询结果封装到那个实体类
- 配置封装时,指定实体类的全限定类名
3、mybatis基于注解的入门
- 把UserDao.xml移除,在dao接口的方法上使用@Select注解,并指定SQL语句
- 在SqlMapConfig.xml中的Mapper配置时,使用class属性指定dao接口的全限定类名
五、自定义mybatis框架(了解mybatis执行细节)
1、mybatis在使用代理dao方式实现增删改查时做了什么?
- 创建代理对象
- 在代理对象中调用selectList
2、自定义mybatis涉及的类
- class Resources
- class SqlSessionFactoryBuilder
- Interface SqlSessionFactory
- Interface SqlSession