具备的知识
-
java基础
-
-
mysql数据库
-
maven工具
-
xml
环境
-
jdk 1.8
-
Mysql 5.7
-
maven 3.6.1
-
idea
一、MyBatis
1、MyBatis框架是什么?
框架:我们只要按照它的规则编写少量代码和配置就能使用它提供功能。
生活举例:去医院看病填写表格,那张表格就是别人准备好的条条框框
MyBatis是一个持久层的框架
2、持久层
2.1、持久化是什么?
程序里的数据从瞬时状态到持久状态的一个转换过程。
内存:断电即失 磁盘:持久数据
2.2、为什么需要持久化?
-
程序中有些对象不允许丢失
-
内存价格比较昂贵
-
生活举例:冷藏
2.3、持久层是什么?
我们之前学过三层架构
-
dao(数据访问)层
-
service(业务逻辑处理)层、
-
controller(请求控制/处理)层。。。
持久化是一个动作,而dao层是所有完成数据持久化的代码块,层的界限更加的清晰
3、mybatis提供好处
-
支持自定义sql、存储过程以及高级映射。
-
帮我们几乎免除了所有的jdbc代码以及设置参数和获取结果集等工作。
-
可以通过简单xml或注解来配置和映射原始类型、接口、java对象为数据库中的记录。
ORM(对象关系映射,object relational mapping)
java程序 ---------- 数据库 类 ---------- 表 属性 ---------- 字段 对象 ---------- 表记录
4、为什么要学MyBatis?
-
帮助程序员将数据存入数据库中
-
方便,传统的jdbc代码太复杂了,帮助我们简化它。
-
用的人多
优点
-
简单易学(本身就很小很简单,只要2个jar包+一点点配置文件就可以安装上mybatis了)
-
灵活(mybatis不会对现有的程序或数据库加强有任何影响;sql语句都是写在xml配置文件里面,便于统一管理和优化)
-
解除程序代码和sql语句的耦合度
-
提供映射标签,支持对象与数据库字段关系映射
-
提供对象关系映射标签,支持对象关系组建维护(数据库里面1对1、1对多、多对多在mybatis如何配置才能映射到java对象)
-
提供xml标签,支持编写动态sql
5、开始使用MyBatis
5.1、文档
官方文档:https://mybatis.org/mybatis-3/zh/index.html
官方文档是最详细的,任何一个老师讲基本不会比它更详细了,我们老师只能简化它,将重要的提取出来。
5.2、创建一个maven工程
maven仓库地址:https://mvnrepository.com/
告诉同学们去Maven仓库中寻找MyBatis的jar,找到后...
pom.xml中添加 Mybatis 的jar包依赖,如下
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
5.3、创建 mybatis-config.xml 配置文件
-
src/main/resources/mybatis-config.xml 文件大致如下
<configuration>
<!-- 写上我们mybatis的各种各样的配置拉 -->
<settings>
<!-- 告诉mybatis,使用驼峰命名法的规则来 转换数据的列名 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- sql语句输出配置 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<!-- 别名定义 -->
<typeAliases>
<!-- <typeAlias type="java.lang.Integer" alias="integer"/>
<typeAlias type="entity.Student" alias="Student"/> -->
<package name="扫描指定报名"/>
</typeAliases>
<!-- 数据库环境配置的标签,该标签之中可以配置多个数据库连接环境
default="oracle":表示默认使用oracle的数据库环境
-->
<environments default="oracle">
<!-- oracle 连接环境 -->
<environment id="oracle">
<!-- type属性:
JDBC: 告诉mybatis 使用jdbc提供的事物提交、回滚
managed : 表示将事物的控制交给 j2ee容器
-->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源配置
type 属性:
pooled: 表示使用连接池的方式 来管理连接对象,每次访问数据库的时候 从连接池里面拿一个连接处理啊,用完之后 放回去
unpooled: 不使用连接池来管理嘛
jndi:在 j2ee 容器来中数据源
-->
<dataSource type="POOLED">
<!--数据库驱动类-->
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<!--oracle jdbc连接串-->
<property name="url" value="jdbc:oracle:thin:@ip地址:端口号:SID"/>
<property name="username" value="用户名"/>
<property name="password" value="密码"/>
</dataSource>
</environment>