Mybatis的介绍和基本使用
0、数据库操作框架的历程
##### (1) JDBC
JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

##### (2) DBUtils
DBUtils是Java编程中的数据库操作实用工具-小巧简单实用。
DBUtils封装了对JDBC的操作-简化了JDBC操作-可以少写代码。
DBUtils三个核心功能介绍
1、QueryRunner中提供对sql语句操作的API
2、ResultSetHandler接口-用于定义select操作后-怎样封装结果集
3、DBUtils类-它就是一个工具类-定义了关闭资源与事务处理的方法
##### (3)Hibernate
Hibernate 是由 Gavin King 于 2001 年创建的开放源代码的对象关系框架。它强大且高效的构建具有关系对象持久性和查询服务的 Java 应用程序。
Hibernate 将 Java 类映射到数据库表中-从 Java 数据类型中映射到 SQL 数据类型中-并把开发人员从 95% 的公共数据持续性编程工作中解放出来。
Hibernate 是传统 Java 对象和数据库服务器之间的桥梁-用来处理基于 O/R 映射机制和模式的那些对象。

Hibernate 优势
Hibernate劣势
##### (4) JDBCTemplate
JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法.如果你的查询很简单-仅仅是传入相应SQL或者相关参数-然后取得一个单一的结果-那么你可以选择如下一组便利的模板方法。
优点:运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务 缺点:必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存
1、什么是Mybatis?
MyBatis 是一款优秀的持久层框架-它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects-普通老式 Java 对象)为数据库中的记录。
优点:
1、与JDBC相比-减少了50%的代码量
2、 最简单的持久化框架-简单易学
3、SQL代码从程序代码中彻底分离出来-可以重用
4、提供XML标签-支持编写动态SQL
5、提供映射标签-支持对象与数据库的ORM字段关系映射
缺点:
1、SQL语句编写工作量大-熟练度要高
2、数据库移植性比较差-如果需要切换数据库的话-SQL语句会有很大的差异
2、第一个Mybatis项目
1、创建普通的maven项目
2、导入相关的依赖
pom.xml
``xml
4.0.0 com.oi mybatis_helloworld 1.0-SNAPSHOT org.mybatis mybatis 3.5.4 mysql mysql-connector-java 8.0.16 log4j log4j 1.2.17
`
3、创建对应的数据表-数据表我们使用之前的demo数据库-脚本文件在群里-大家自行去下载安装
4、创建与表对应的实体类对象
emp.java
`java
package com.oi.bean;import java.util.Date;public class Emp { private Integer empno; private String ename; private String job; private Integer mgr; private Date hiredate; private Double sal; private Double common; private Integer deptno; public Emp() { } public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Double sal, Double common, Integer deptno) { this.empno = empno; this.ename = ename; this.job = job; this.mgr = mgr; this.hiredate = hiredate; this.sal = sal; this.common = common; this.deptno = deptno; } public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } public Double getCommon() { return common; } public void setCommon(Double common) { this.common = common; } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } @Override public String toString() { return "Emp{" + "empno=" + empno + ", ename='" + ename + ''' + ", job='" + job + ''' + ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal + ", common=" + common + ", deptno=" + deptno + '}'; }}
`
5、创建对应的dao类
EmpDao.java
`java
package com.oi.dao;import com.oi.bean.Emp;public interface EmpD