一、MyBatis概述
1、mybatis简介
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
2、mybatis历史
原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation 迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis ,代码于2013年11月迁移到Github(下载地址见后)。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
3、为什么要使用mybatis
MyBatis是一个半自动化的持久化层框架。
jdbc编程---当我们使用jdbc持久化的时候,sql语句被硬编码到java代码中。这样耦合度太高。代码不易于维护。在实际项目开发中会经常添加sql或者修改sql,这样我们就只能到java代码中去修改。
Hibernate和JPA
长难复杂SQL,对于Hibernate而言处理也不容易
内部自动生产的SQL,不容易做特殊优化。
基于全映射的全自动框架,javaBean存在大量字段时无法只映射部分字段。导致数据库性能下降。
对开发人员而言,核心sql还是需要自己优化
sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。
可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。成为业务代码+底层数据库的媒介
4、理解 SqlSession及其子父类的含义!
SqlSession的使用范围
- SqlSession中封装了对数据库的操作,如:查询、插入、更新、删除等。
- SqlSession通过SqlSessionFactory创建。
- SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建。
SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory创建的。所以可以将SqlSessionFactoryBuilder当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。
SqlSessionFactory
SqlSessionFactory是一个接口,接口中定义了openSession的不同重载方法,SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。
SqlSession
SqlSession是一个面向用户的接口,sqlSession中定义了数据库操作方法。
每个线程都应该它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。
二、MyBatis的Hello示例程序
1、创建一个数据库和一个单表
2、搭建mybatis开发环境
创建一个java工程
导 入 需 要 的 jar 包:
3、创建Pojo对象User
不调用接口方法,直接映射到xml文件中!
4、在src目录创建mybatis-config.xml核心配置文件
配置文件代码获取方法
5、创建UserMapper.xml配置文件
6、传统mybatis的hello world 示例代码
代码流程:
关于Mybatis的配置文件提示功能:
关于log4j的提示:
如果不想看到,解决方案为:
只要在应用的classpath中创建一个名称为log4j.properties的文件, 文件的具体内容如下:
注意:
7.加入log4j配置
导入‘log4j-1.2.17.jar’包
在工程下的config文件夹中创建 "log4j.properties"文件
打印结果:
流程图解:
三、传统方式mybatis的增,删,改,查实现
1、UserDao:
2、编写UserMapper.xml中的配置
映射关系图解:
3、编写UserDao测试
4、插入记录并返回主键
打印结果:
5、插入记录并返回主键
6、标签的使用
四、Mapper 接口方式的 mybatis 的增,删,改,查实现
1、Mapper 接口编程的命名习惯
- JavaBean对象是 User
- Mapper接口的名称是: UserMapper
- sql语句的配置文件命名: UserMapper.xml
- JavaBean对象是 Book
- Mapper接口的名称是: BookMapper
- sql语句的配置文件命名: BookMapper.xml
2、Mapper接口开发有四个开发规范 必须遵守
1、名称空间必须是接口的全类名
2、方法名必须与id值一致
3、parameterType必须与方法参数类型一致
4、resultType必须与方法返回值一致(是指javaBean对象)