MyBatis的基础介绍
作用:连接数据库,访问、操作数据库中的数据,最终将结果返回给业务层
MyBatis是支持定制化SQL,存储过程及高级映射的持久层框架
定制化SQL:自己写SQL
存储过程:设计mysql的高级部分
普通映射:数据库查询出数据后,根据反射将其对应实体类对象,若字段名与属性名一致,则将数据映射为实体类对象,若字段名与属性名不一致,则无法映射
高级映射:自定义映射,可解决字段名与属性名不一致的情况,及一对多、多以一的关系
MyBatis:避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,是一个 半自动的ORM(Object Relation Mapping)框架
ORM(Object Relation Mapping):Object表示实体类对象;Relation表示关系型数据库;Mapping表示映射;java中的实体类对象和数据库中的数据创建映射关系
Hibernate: 全自动的ORM框架,能自动生成SQL
MyBatis:
1、xml和注解用于配置和原始映射
实现SQL语句:
1)xml文件
2)注解方式写在接口中
2、面向接口编程
现有的DAO层(即mapper层)只需要有接口,不需要实现类
只需在调用接口中的方法时,直接对应相应的SQL语句并执行
3、将接口和Java的实体类对象映射成数据库中的记录
MyBatis操作SQL的过程
MyBatis有两个配置文件:
1)核心配置文件:连接数据库信息和MyBatis全局配置信息
2)映射文件:编写SQL语句
MyBatis中SQL和java编程分开,功能边界清晰。java代码注重业务逻辑,SQL语句专注数据
搭建MyBatis
1、创建Maven工程
打包方式:jar
引入依赖
2、创建MyBatis的核心配置文件
这里包括:设置数据库的连接 和 引入映射文件
主要用于配置连接数据库的环境和MyBatis的全局配置信息
将来整合Spring之后,这个配置文件可以省略
3、创建mapper接口
调用mapper接口中的方法则会自动调用SQL语句中并执行。
MyBatis的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,不需要提供实现类。
4、创建mapper接口对应的映射文件
作用:用于编写SQL,对表中的数据进行操作
实体类 ------- 表;属性名 ------------- 字段名;对象----------------记录/行
映射文件的命名规则:表所对应的实体类的类名+Mapper.xml
MyBatis中可以面向接口操作数据,要保证两个一致:1)mapper接口的全类名和映射文件的命名空间(namespace)保持一致
2)mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
注意:
MyBatis的两个配置文件的约束类型不同:
1)映射文件:mybatis-3-mapper.dtd
2)核心配置文件:mybatis-3-config.dtd
在Resources下相当于普通目录,创建各层级目录时用 / 的方式
一个mapper接口对应一个映射文件,对应一张表,对应一个实体类对象
5、通过junit测试功能
1)加载核心配置文件
2)创建SqlSessionFactoryBuilder对象
3)创建工厂类SqlSessionFactory
4)创建SqlSession对象,设置sql为自动提交
5)创建Mapper接口的代理实现类对象
6)调用mapper接口中的方法
根据mapper接口的全类名找到映射文件,根据接口中的方法名找到sql标签
SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
SqlSessionFactory:是“生产”SqlSession的“工厂”。
工厂模式:将创建对象的过程进行封装,直接提供当前的对象
mybatis框架底层基于mapper接口动态的创建实现类(用代理模式)
加入log4j日志功能
加入依赖
加入log4j的配置文件
日志的级别:
FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
从左到右打印的内容越来越详细
未完待续…