MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。javascript
MyBatis 避免了几乎全部的 JDBC 代码和手动设置参数以及获取结果集。php
MyBatis可使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.html
原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation 迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式改名为Mybatis ,代码于2013年11月迁移到Github(下载地址见后)。java
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)mysql
MyBatis是一个半自动化的持久化层框架。web
jdbc编程---当咱们使用jdbc持久化的时候,sql语句被硬编码到java代码中。这样耦合度过高。代码不易于维护。在实际项目开发中会常常添加sql或者修改sql,这样咱们就只能到java代码中去修改。sql
Hibernate和JPA数据库
长难复杂SQL,对于Hibernate而言处理也不容易apache
内部自动生产的SQL,不容易作特殊优化。编程
基于全映射的全自动框架,javaBean存在大量字段时没法只映射部分字段。致使数据库性能降低。
对开发人员而言,核心sql仍是须要本身优化
sql和java编码分开,功能边界清晰,一个专一业务、一个专一数据。
可使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。成为业务代码+底层数据库的媒介
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实例的引用放在一个类的静态字段或实例字段中。
建立一个java工程
导 入 需 要 的 jar 包:
不调用接口方法,直接映射到xml文件中!
配置文件代码获取方法
流程图解:
映射关系图解:
- JavaBean对象是 User
- Mapper接口的名称是: UserMapper
- sql语句的配置文件命名: UserMapper.xml
- JavaBean对象是 Book
- Mapper接口的名称是: BookMapper
- sql语句的配置文件命名: BookMapper.xml
一、名称空间必须是接口的全类名
二、方法名必须与id值一致
三、parameterType必须与方法参数类型一致
四、resultType必须与方法返回值一致(是指javaBean对象)