mybatis
一.mybatis的介绍
1.什么是mybatis?
mybatis的前身是ibatis,是一个基于Java的持久层框架。由于java本身JDBC操作数据库存在诸多弊端所以为了解决这些问题产生了mybatis框架。例如jdbc的参数转换,sql执行,以及结果集的处理等等。mybatis在这基础之上都做了很好的处理。
2.市场上java持久层框架对比
mybatis和hibernate的对比
一句话总结:
Mybatis:小巧、方便、高效、简单、直接、半自动化
Hibernate:强大、方便、高效、复杂、间接、全自动化
3.mybatis解决了JDBC那些问题?
1.参数映射,我们不需要自己手动去将参数转换.
2.有效的防止了sql注入攻击.
3.结果映射,结果集也不需要自己去解析
4.数据库连接池,有效的避免了数据库连接的过渡开销.
5.事务管理
二.mybatis的架构分析
mybatis封装JDBC,在整个调用链路上的位置
mybatis的产品架构是怎样的
mybatis的设计架构
Mybatis 框架"构成"分析,如下图所示:
资源配置技术架构,如下图所示:
会话工厂对象创建(说说SqlSessionFactory对象的创建过程),如下图所示:
会话对象创建?(说说sqlsession对象创建过程),如下图所示:
会话对象应用方式,如下图所示:
三.mybatis的快速入门
1.导入依赖
导入依赖,准备好数据库
<dependencies>
<!-- 添加mysql数据库jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- 添加mybatis框架的jar包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
2.配置文件的编写;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>
<!-- 读取数据库连接的文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 配置环境 ,并选择默认的环境,有且只能有一个-->
<environments default="develop">
<environment id="develop">
<!-- 设置数据库管理模式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 设置数据库参数 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="StudentMapper.xml"/>
</mappers>
</configuration>
3.代码编写流程
1)编写pojo对象
public class Student {
private Integer id;
private String name;
private Integer age;
private String addre;
private Double score;
public Student(int id, String name, int age, String addre, double score) {
super();
this.id = id;
this.name = name;
this.age = age;
this.addre = addre;