MyBatis基础

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MyBatis基础

# 1.MyBatis简介

什么是MyBatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

1.项目依赖

<dependencyManagement>
    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
    </dependencies>
</dependencyManagement>

2.配置mybatis的核心配置文件

习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。
核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息核心配置文件存放的位置是src/main/resources目录下

配置文件可以去看官网

image.png

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
<?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>
    <!--配置连接数据库的文件-->
    <environments default="development">
        <environment id="development">
            <!--事务管理-->
            <transactionManager type="JDBC"/>
            <!--数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="564929"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

3.创建mapper接口

image.png

建立数据库
MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
/**
 * @author stevezhao
 * @version 1.0
 * @description: UserMapper
 * @date 2022/3/22 21:29
 */
public interface UserMapper {

    /**
     * 添加用户
     * @return
     */
    int insertUser();
}

4.创建mybatis映射文件

mybatis是面向接口编程

相关概念:ORM (Object Relationship Mapping)对象关系映射。

  • 对象:Java的实体类对象
  • 关系:关系型数据库
  • 映射:二者之间的对应关系
java概念 数据库概念
属性 字段/列
对象 记录/行
1、映射文件的命名规则:
表所对应的实体类的类名+Mapper.xml
例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml因此一个映射文件对应一个实体类,对应一张表的操作
MyBatis映射文件用于编写SQL,访问以及操作表中的数据
MyBatis映射文件存放的位置是src/main/resources/mappers目录下

2、MyBatis中可以面向接口操作数据,要保证两个—致:
a>mapper接口的全类名和映射文件的命名空间(namespace)保持—致
b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持—致

<?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="cn.zhao.mapper.UserMapper">
    <insert id="insertUser">
        insert into t_user values (null ,'admin','123456',23,'男','123@qq.com')
    </insert>
</mapper>

5.通过junit测试功能

  @Test
    public void testMybatis() throws IOException {
        // 加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 获取SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        // 获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 获取mapper接口对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        // 测试功能
        int result = userMapper.insertUser();
        System.out.println("result:"+result);

    }
}
  • SqlSessiom:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
  • SqlSessionFactory:是“生产"SqlSession的“工厂"。
  • 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类"中,以后都使用这个工厂类来"生产"我们需要的对象。
测试失败,显示成功,但数据没插入
image.png
@Test
public void testMybatis() throws IOException {
    // 加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    // 获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    // 获取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 获取mapper接口对象
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    // 测试功能
    int result = userMapper.insertUser();
    // 提交事务
    sqlSession.commit();
    System.out.println("result:"+result);

}
记得提交事务,不然会没数据
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL XML Java
Mybatis基础笔记五
Mybatis基础笔记五
|
SQL XML Oracle
Mybatis基础笔记四
Mybatis基础笔记四
|
SQL Java 数据库连接
mybatis基础笔记三
mybatis基础笔记三
|
SQL Java 数据库连接
mybatis基础笔记二
mybatis基础笔记二
|
SQL Java 关系型数据库
mybatis基础笔记一
mybatis基础笔记一
|
监控 前端开发 druid
整合MyBatis(一):基础环境搭建|学习笔记
快速学习整合MyBatis(一):基础环境搭建
102 0
|
SQL Java 数据库连接
MyBatis动态Sql 基础标签
MyBatis动态Sql 基础标签
137 0
|
XML 存储 SQL
技术:Java-Web基础|MyBatis整合到SpringBoot(二)
上一篇简单介绍了下MyBatis,知道并了解什么是MyBatis,MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
技术:Java-Web基础|MyBatis整合到SpringBoot(二)
|
SQL XML 存储
技术:Java-Web基础|MyBatis(一)
MyBatis本是Apache的一个开源项目iBatis。目前代码留在Github:https://github.com/mybatis/mybatis-3 ,目前的最新版本是v3.5.10。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
技术:Java-Web基础|MyBatis(一)
|
SQL Java 关系型数据库
MyBatis(二、基础进阶)
mybatis多表查询,一对一,一对多,多对多 动态sql < if > < foreach > MyBatis映射文件配置
184 0
MyBatis(二、基础进阶)