什么是框架?
- 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题
- 使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率
三层架构
表现层:用于展示数据
业务层:处理业务需求
持久层:和数据库交互
持久层技术解决方案
- JDBC技术
- Connection
- PreparedStatement
- ResultSet
- Spring的JdbcTemplate:Spring对jdbc的简单封装
- Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对jdbc的简单封装
- 以上这些都不是框架,JDBC是规范,Spring的JdbcTemplate和Apache的DBUtils都只是工具类
mybatis的概述
- mybatis是一个持久层框架,用java编写的
- 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动、创建连接等繁杂过程
- 它使用了ORM思想实现了结果集的封装
- ORM
- Object Relational Mapping 对象关系映射
- 简单的说,就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表
- 今天我们需要做到实体类中的属性和数据库表的字段名保持一致
mybatis入门
- mybatis的环境搭建
- 第一步:创建maven工程并导入坐标
- 第二步:创建实体类和dao接口
- 第三步:创建mybatis的主配置文件SqlMapConfig.xml
- 第四步:创建映射配置文件IUserDao.xml
- 环境搭建的注意事项
- 1.创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识保持一致,在mybatis中它把持久层的操作接口名称和映射文件也叫做Mapper,所以IUserDao和IUserMapper是一样的
- 2.在idea中创建目录时,它和包时不一样的;包在创建时:com.itheima.dao时三级机构;目录在创建时:com.itheima.dao是一级结构
- 3.mabatis的映射配置文件位置必须和dao接口的包结构相同
- 4.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
- 5.映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
- 当我们遵从第3、4、5点之后,我们在开发中就无需再编写dao的实现类
- mybatis的入门案例
- 1.读取配置文件
- 2.创建SqlSessionFactory工厂
- 3.创建SqlSession
- 4.创建Dao接口的代理对象
- 5.执行dao中的方法
- 6.释放资源
- 注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中
- 配置的方式:指定实体类的全限定类名
- mybatis基于注解的入门案例
- 把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定sql语句。同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao借考的全限定类名
- 明确
- 我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式,不管使用xml还是注解配置
- 但是mybatis时支持写dao实现类的
读取配置文件
- 1.使用类加载器,它只能读取类路径的配置文件
- 2.使用ServletContext对象的getRealPath()
入门案例设计模式分析
- 创建mybatis使用了构建者模式,把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象
- 生产SqlSession使用了工厂模式,优势是解耦(减低类之间的依赖关系)
- 创建dao接口实现类使用了代理模式,优势是不修改源码的基础上对已有方法增强
自定义mybatis的分析
- mybatis在使用代理dao的方式实现增删改查时做两件事
- 1.创建代理对象
- 2.在代理对象中调用selectList
- 自定义mybatis能通过入门案例看到类
- class Resources
- class SqlSessionFactoryBuilder
- interface SqlSessionFactory
- interface SqlSession