1.什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2.MyBatis
1.1 mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
mybatis是一个基于Java的持久层框架(半自动)。持久层框架就是操作数据库的框架,对之前使用的JDBC代码进行了封装。
ORM(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术(将Java中的对象和数据库中的表关联对应起来)。理解为:Java对象与数据库表的映射管理框架。
Mybatis相当于将mapper中的入参和出参结果集封装到java的POJoQ类中,实际上Mybatis是半ORM,它鼓励开发人员自己去写sql,也正是因为sql语句要自己写,所以Mybatis是将java方法与SQL句关联起来,而没有将java对象与数据库关联起来。1.2 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
可以把mybatis看做是高级的jdbc,用来解决jdbc的缺点:
1)、自动注册驱动 ;
2)、自动创建jdbc中使用的Connection, Statement,ResultSet;
3)、自动执行sql语句, 得到ResultSet;
4)、自动处理ResultSet, 把记录集中的数据转为java对象, 同时还能把java对象放入到List集合;
5)、自动关闭资源;
6)、自动实现sql语句和java代码的解耦合;3、mybatis与hibernate的区别
这种面试一般会被问到
两者均为ORM框架,但也有一些不同:
mybatis hibernate 轻量级 重量级 半自动化 全自动化 sql hql(但也可以使用sql,但违背了hibernate的初衷 扩展性、迁移性比较差 无缝移植
以下是pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zking</groupId>
<artifactId>spring_04</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring_04 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project-build-sourceEncoding>UTF-8</project-build-sourceEncoding>
<mybatis-version>3.5.7</mybatis-version>
<mybatis-generator-maven-plugin-version>1.3.2</mybatis-generator-maven-plugin-version>
</properties>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis-version}</version>
</dependency>
<build>
<plugins>
<!--MyBatis自动生成工具插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator-maven-plugin-version}</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>