没有合适的资源?快使用搜索试试~ 我知道了~
首页MyBatis使用手册PDF
资源详情
资源评论
资源推荐

运行环境
IDEA 2018 + Maven + Mysql 5.1.44 + MyBatis 3.4.6
POM文件
从JDBC谈起
首先我们先去准备以下数据,做一个User表,以下我们就根据user表来表述整个MyBatis的入门篇
跟着搭建环境的小伙伴可以直接复制这段sql执行
对于传统的jdbc操作而言 我们通常都是怎么去连接数据库呢?先总结一下步骤
<dependencies>
<!--MyBatis JAR-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--MySQL JAR-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
</dependencies>
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`sex` varchar(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(4) NULL DEFAULT NULL,
`phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci
ROW_FORMAT = Compact;
INSERT INTO `user` VALUES (1, '张三', '男', 18, '189----5487');
INSERT INTO `user` VALUES (2, '皇甫', '男', 24, '123----7536');
SET FOREIGN_KEY_CHECKS = 1;

1. 加载驱动
2. 获取连接
3. 准备sql
4. 发送sql
5. 填充参数
6. 执行sql
7. 执行查询的情况下获取结果集
8. 关闭资源
那我们就根据传统JDBC去编写代码吧,进而引申出它的缺点以及为什么会有MyBatis的出现
package com.huangfu;
import java.sql.*;
/**
* 传统jdbc的测试方案
* 注意,再跟着练习的时候 请看清楚导包的名字 mysql jar包有重复包名,新手容易混淆
* @author 皇甫
*/
public class TestJdbc {
/**
* 测试查询语句
* @param args
*/
public static void main(String[] args) throws SQLException {
//数据库连接引用
Connection connection = null;
//sql执行器的引用
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//驱动加载
Class.forName("com.mysql.jdbc.Driver");
//获取连接
String url = "jdbc:mysql://localhost:3306/testmybatis";
String userName = "root";
String password = "hr";
connection = DriverManager.getConnection(url, userName, password);
//准备sql
final String SQL = "select * from user where id=?";
//发送sql
preparedStatement = connection.prepareStatement(SQL);
//填充参数
preparedStatement.setInt(1, 1);
//执行sql
resultSet = preparedStatement.executeQuery();
//处理结果集
while (resultSet.next()){
System.out.println("id:"+resultSet.getInt("id"));
System.out.println("name:"+resultSet.getString("name"));
System.out.println("sex:"+resultSet.getString("sex"));
System.out.println("age:"+resultSet.getInt("age"));
System.out.println("phone:"+resultSet.getString("phone"));
System.out.println("------------------------------------------");

以上的jdbc缺点是什么呢,看一下下面图解分析?
思考一个问题,我们能不能将驱动加载和sql,从java代码中分离出来,写进配置文件里面呢,加载驱动和获取连
接利用工厂模式获取呢?我们可以将 驱动加载 、 获取连接 、 发送sql 、 执行sql 、 关闭资源 ;封装成一个
JDBCUtil工具类;当然,这里有兴趣的同学可以自己封装一下,成功了别忘了告诉我这个好消息。
MyBatis入门篇
此时,我们上面所说的封装成工具类什么的,一个优秀的开源框架MyBatis全部都帮我们做到了,它将连接信
息,以及SQL等全部都放入了配置文件,再配置文件中我们只需要关注SQL语句就OK了;
MyBatis 是一款优秀的 持久层框架 ,它支持 定制化 SQL 、 存储过程 以及 高级映射 。MyBatis 避免了几乎所有的
JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以 使用简单的 XML 或 注解 来配置和映射原生信息,将
接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
}
}catch (Exception e){
e.printStackTrace();
} finally {
// 关闭连接,释放资源
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}
}
}

MyBatis架构图
以上我们可以看出,其实MyBatis很简单
MyBatisConfig.xml是一个全局的配置文件,一个项目内只能有一个。
Mapper.xml是映射文件,可以有多个
SqlSessionFactory见名知意,是一个SqlSession工厂,用于获取sqlSession;获取方式为 new
SqlSessionFactoryBuilder.build(inputStream)
SqlSession 用于操作SQL的CRUD(增删改查 )
Executor执行器 执行sql
Mapped Statement 在配置文件中配置
初识MyBatis
在Resources文件夹的根目录建立MyBatisConfig.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>
<!--配置默认使用那个环境变量 以id作为标志-->
<environments default="test">
<!--配置连接环境-->
<environment id="test">
<!--事务管理器使用JDBC-->
<transactionManager type="JDBC"/>

为了方便,建立映射数据库的实体类
<!--数据源 连接池使用该POOLED-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testmybatis"/>
<property name="username" value="root"/>
<property name="password" value="hr"/>
</dataSource>
</environment>
<!--配置多个连接环境,至于使用谁在environments指定-->
<environment id="development">
<!--事务管理器使用JDBC-->
<transactionManager type="JDBC"/>
<!--数据源 连接池使用该POOLED-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/testmybatis"/>
<property name="username" value="root"/>
<property name="password" value="hr"/>
</dataSource>
</environment>
</environments>
</configuration>
package com.huangfu.entity;
/**
* 构建实体类
* @author 皇甫
*/
public class User {
private Integer id;
private String name;
private String sex;
private Integer age;
private String phone;
public User(Integer id, String name, String sex, Integer age, String phone) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.phone = phone;
}
public User() {
}
public Integer getId() {
return id;
}
剩余45页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0