MyBatis简介

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MyBatis简介

简介

MyBatis作用

  • MyBatis 是支持定制化 Sql、存储过程以及高级映射的优秀的 持久层 框架。
  • MyBatis 避免了几乎所有的 Jdbc 代码和手动设置参数以及获取结果集。
  • MyBatis 可以使用简单的 Xml 用于配置和原始映射,将接口和 Java 的 Pojo 类映射成数据库中的记录。
  • 使开发者只需要关注 Sql 本身,而不需要花费精力去处理例如注册驱动、创建 Connection、创建Statement、手动设置参数、结果集检索等 Jdbc 繁杂的过程代码。

MyBatis历史

  • 原是 Apache 的一个开源项目 IBatis
  • 20106 月这个项目由 Apache Software Foundation 迁移到了 GoogleCode,并且改名为 MyBatis
  • IBatis 一词来源于 InternetAbatis 的组合,是一个基于 Java 的 持久层 框架。

为何选择MyBatis

Jdbc

  • Sql 夹在 Java 代码块里,耦合度高导致硬编码内伤。
  • 维护不易且实际开发需求中 Sql 是有变化,频繁修改的情况多见。
  • 要自已创建 Connection、创建 Statement、手动设置参数、结果集检索等。

HiBernate

  • 长难复杂 Sql,对于 HiBernate 而言处理也不容易。
  • 内部自动生产的 Sql,不容易做特殊优化。
  • 基于全映射的全自动框架,JavaBean 存在大量字段时无法只映射部分字段。导致数据库性能下降。

MyBatis

  • 对开发人员而言,核心 Sql 还是需要自己优化。
  • MyBatis 是一个半自动化的持久化层框架。
  • MyBatis 是支持定制化 Sql、存储过程以及高级映射的优秀的持久层框架。

MyBatis入门程序

下载MyBatis

官方地址:http://www.mybatis.org/mybatis-3/getting-started.html

GitHub:https://github.com/mybatis/mybatis-3/releases

我这里就不写的非常详细了,下载MyBatis自行下载,过于简单。

引入MyBatis

还额外的加入了 Juint LomBok 单元测试的 Jar

创建表对应Domain

sql


/*
Navicat MySQL Data Transfer
Source Server         : xhh
Source Server Version : 50720
Source Host           : localhost:3306
Source Database       : mybatis
Target Server Type    : MYSQL
Target Server Version : 50720
File Encoding         : 65001
Date: 2020年5月16日22:35:41
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for customer
-- ----------------------------
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (
  `cust_id` int(11) NOT NULL AUTO_INCREMENT,
  `cust_name` varchar(255) DEFAULT NULL,
  `cust_profession` varchar(255) DEFAULT NULL,
  `cust_phone` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO `customer` VALUES ('1', '鲁班', '射手', '13499887733', '303158131@qq.com');
INSERT INTO `customer` VALUES ('2', '李白', '刺客', '18977665521', 'libai@163.com');
INSERT INTO `customer` VALUES ('3', '阿轲', '刺客', '18977665997', 'aike@qq.com');
INSERT INTO `customer` VALUES ('4', '德玛西亚', '肉盾', '13700997665', 'demaxiya.126.com6');
INSERT INTO `customer` VALUES ('5', '亚索', '战士', '13586878987', 'yasuo@qq.com');
INSERT INTO `customer` VALUES ('6', '奶妈', '辅助', '13398909089', 'nama@qq.com');
INSERT INTO `customer` VALUES ('7', '剑圣', '刺客', '13398909088', 'jiansheng@163.com');
INSERT INTO `customer` VALUES ('8', '盖伦', '肉盾', '15923242231', 'gailun@126.com');
INSERT INTO `customer` VALUES ('9', '锤石', '辅助', '13398908900', '8888@163.com');
INSERT INTO `customer` VALUES ('10', '阿木木', '辅助', '13398908928', '13398908928@qq.com');

com/xhh/domain/Customer

@Getter@Setter@ToString:为 LomBok 的注解,可以为 Pojo 自动的生成 Git Set

@Getter@Setter@ToString
public class Customer {
    private Integer cust_id;
    private String cust_name;
    private String cust_profession;
    private String cust_phone;
    private String email;
}

创建MyBatis配置文件

resource/SqlMappingConfig.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>
    <!-- spring整合后 environments配置将废除 使用spring中的连接池 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

创建Mapping文件

com/xhh/domain/Customer.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="myTest">
    <!--根据cust_id查询客户-->
    <select id="queryCustomerById" parameterType="Int" resultType="com.xhh.domain.Customer">
    SELECT * FROM `customer` WHERE cust_id  = #{cust_id}
  </select>
</mapper>

配置文件当中引入Mapping

修改:resource/SqlMappingConfig.xml

<!--加载映射文件-->
<mappers>
    <mapper resource="com/xhh/domain/Customer.xml"/>
</mappers>

创建工厂测试

@Test
public void test() throws IOException {
    // 1.创建 SqlSessionFactoryBuilder 对象
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    // 2.加载 SqlMappingConfig.xml 配置文件
    InputStream inputStream = Resources.getResourceAsStream("SqlMappingConfig.xml");
    // 3.创建 SqlSessionFactory 对象
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    // 4.创建 SqlSession 对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 5.执行 SqlSession 对象执行查询
    /*
    * 第一个参数:Customer.xml 的 statement 的 Id;
    * 第二个参数:是执行 Sql 需要的参数;
    * */
    Customer customer = sqlSession.selectOne("queryCustomerById", 1);
    // 6.打印结果
    System.out.println(customer);
    // 7.释放资源
    sqlSession.close();
}

MyBatis执行流程

MyBatis整体架构

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL Java 数据库连接
Mybatis入门简介
Mybatis入门简介
104 0
|
7月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
311 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
7月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
177 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
7月前
|
SQL XML Java
MyBatis简介及入门案例
MyBatis简介及入门案例
76 0
|
Java 数据库连接 Maven
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
57 0
|
SQL XML druid
Mybatis快速复习--简介篇
Mybatis快速复习--简介篇
96 0
|
SQL XML Java
mybatis-plus 简介、安装、配置(1)【just Like】
mybatis-plus 简介、安装、配置(1)【just Like】
250 0
mybatis-plus 简介、安装、配置(1)【just Like】
|
SQL XML Java
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较
MyBatis 前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会并正式更名为MyBatis,在2013年11月,MyBatis迁移到了GitHub。
213 0
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较
|
SQL XML 存储
MyBatis框架:第一章:简介
MyBatis框架:第一章:简介
114 0
MyBatis框架:第一章:简介
|
Java 数据库连接 数据库
Mybatis Plus 中的LambdaQueryWrapper简介
Mybatis Plus 中的LambdaQueryWrapper简介
1125 0