一、Mybatis介绍
MyBatis是一个ORM的数据库持久化框架。
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀 持久层框架
。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
- 什么是ORM? -->对象关系映射
- 什么叫数据库持久化? -->就是将内存中的数据模型转换为存储模型,可以理解为你的东西保存在磁盘中,而不是在内存中,不会随着电脑的关机而丢失数据
- 常见的数据持久有:磁盘持久化和数据库持久化。
数据库持久化是数据持久化的其中一种,就是把内存中的数据保存到数据库中,Java中最简单的就是使用jdbc来完成数据库持久化
什么又叫框架? --> 一系列功能的整合,方便我们去使用
框架:Spring:ioc(依赖注入[bean])和aop(面向切面编程[事务])
SpringMVC:mvc的框架(model,view,controller),[struts2也是mvc框架,只是它存在于老项目中,有很多漏洞],现在能用springmvc的就不会用struts2
Jpa/hibernate:jpa是一个规范,hibernate是一个实现,是一个全自动的orm框架.MyBatis是一个半自动的orm框架,也就是会写sql语句Shiro:java中的权限控制框架,spring的security也是权限框架
持久化技术:
- Jdbc:java的持久化技术框架都是基于jdbc实现的,最繁琐,因为sql写在java代码中
- Jpa:关注的是实际的操作,进行数据库数据和bean对象的映射,面向的是对象操作,sql不需要怎么写,所以性能不好控制,但简单直接方便
- MyBatis:半自动orm框架,sql自己写,性能上能很好的控制,但有点繁琐
mybatis和jpa
的相同点和不同点?
相同点:都是ORM框架,都是对jdbc进行封装。
不同点:
①jpa使用的是全映射,我们不需要写sql,由框架自动生成
②mybatis半映射,需要写sql
③mybatis的性能要高于jpa
二、mybatis快速入门
2.1、准备开发环境
1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示:
2、添加相应的jar包
【mybatis】
mybatis-3.5.0.jar
【MYSQL驱动包】
mysql-connector-java-5.1.46.jar
以上可以在下方链接下载,也可去官网下载
下载地址
3、创建数据库和表,针对MySQL数据库
注意:MyBatis不能自动创建表,如果能够自动建表,必须自己先准备好建表的sql语句。
2.2、使用MyBatis查询表中的数据
1、添加Mybatis的配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 核心配置 -->
<configuration>
<!-- 引入classpath下的jdbc的配置文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 不建议使用这种方式定义别名,但要知道
<typeAlias type="cn.aaa.domain.Product" ></typeAlias> -->
<!-- 自定义别名: typeAliases:类型的别名 -->
<typeAliases>
<!-- typeAlias:这个type和alias的关系 -》 一一关系
注意:如果不写alias,默认是类型的简单类名:首字母大小写无关,但是建议使用的时候使用大写! -->
<package name="cn.aaa.domain"></package><!-- 表示这个包路径下的所有的类都有别名,默认简单类名 -->
</typeAliases>
<!-- environments:多个环境 development:开发 -->
<environments default="development">
<!-- 1个环境的配置,id:为这个环境取唯一一个id名称 注意:可配置多个环境 -->
<environment id="development">
<!--事务的管理:JDBC(支持事务)/MANAGED(什么都不做)-->
<transactionManager type="JDBC"/>
<!-- 数据源, 连接池 type(POOLED):MyBatis自带的连接池 -->
<dataSource type="POOLED">
<!-- 连接数据库的参数 -->
<property name="driver" value="${jdbc.driver}"/>
<property name