2.3 MyBatis基础操作

MyBatis 3.4.2实战:数据库交互与操作指南 MyBatis 是一个开源的持久层框架,它提供了对象关系映射(ORM)的持久层框架解决方案。MyBatis 封装了几乎全部的 JDBC 代码和手动设置参数以及获取结果集的过程,使得开发者可以更加专注于 SQL 本身,同时,MyBatis 还支持定制化 SQL、存储过程以及高级映射。MyBatis作为一款优秀的持久层框架,其架构设计简洁且高效,为开发人员提供了方便的数据库操作方式。MyBatis的核心组件包括SqlSessionExecutor和等。:用于构建。 阅读详情


1.Mybatis框架

1.1 Mybatis框架介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。

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

虽然JDBC是操作数据库性能最好的方式,但因为其操作的复杂性,所以在实际项目开发中并不使用JDBC,MyBatis的性能,便捷性做了很好的均衡,所以大多数项目中都使用MyBatis进行数据库的操作。

1.2 ORM思想

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。

关系映射:

  • 对象映射:映射表
  • 对象中有属性:表中有字段

总结: 以对象的方式操作数据库.

举例说明:

  1. JDBC 方式完成入库操作
    • insert into xxxx(字段名称) values (字段的值…)
    • select * from xxxxx 结果集需要自己手动封装为对象 (繁琐)
  2. ORM方式实现入库
    • userDao.insert(对象)
  3. ORM方式的查询
    • List userList = userDao.selectList(对象);

1.3 数据库数据准备

在项目中找到jt.sql文件:
在这里插入图片描述

在SQLyog目录结构空白处单机鼠标右键,选择从外部导入:
在这里插入图片描述

选中文件后,点击执行,完成,然后点击刷新看是否成功导入:
在这里插入图片描述

2.入门案例

2.1 创建项目

首先,我们在当前工程下,新建一个Module:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在新项目中添加Lombok,MyBatis,JDBC的jar包:

  		<!--引入插件lombok 自动的set/get/构造方法插件  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--mybatis依赖包-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!--jdbc依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

2.2 创建相关物料

2.2.1 创建pojo类

在这里插入图片描述

package com.study.pojo;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
@Data
@Accessors(chain = true)
public class User implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

2.2.2 编辑mybatis-config.xml文件

Mybatis中需要定义核心配置文件, 在配置文件中 需要指定数据库. 相关接口等信息.

首先创建目录和文件:
在这里插入图片描述

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>

    <!--环境配置标签-->
    <!--MyBatis支持多个数据源的配置,default=“默认链接数据源”-->
    <environments default="development">

        <!--编辑开发环境-->
        <environment id="development">
            <!--MyBatis使用JDBC的方式控制数据库事物-->
            <transactionManager type="JDBC"/>
            <!--type="POOLED" 创建一个数据源吗链接池,每次从池中获取链接-->
            <dataSource type="POOLED">
                <!--版本信息:
                    如果数据源采用5.x的版本, value="com.mysql.jdbc.Driver"
                    如果数据源采用8.x的版本, value="com.mysql.cj.jdbc.Driver"
                -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--数据库链接地址及用户名,密码-->
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&amp;useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;allowMultiQueries=true"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--Mybatis加载Mapper映射文件-->
    <mappers>
        <mapper resource="mybatis/mappers/UserMapper.xml"/>
    </mappers>
</configuration>

我们可以在idea中查看当前数据库依赖版本:
在这里插入图片描述

2.2.3 编辑UserMapper.xml文件

MyBatis根据接口的规范,需要在自己指定的映射文件中添加sql的语句,从而实现数据库的操作,并且一个接口对应一个映射文件,接下来我们编辑此前创建的映射文件:

<?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">

<!--namespace是mybaits映射文件的唯一标识,与接口对应-->
<mapper namespace="com.study.mapper.UserMapper">
    <!--id 表示接口方法
        resultType 返回值结果类型
    -->
    <select id="findAll" resultType="com.study.pojo.User">
        select * from demo_user
    </select>
</mapper>

2.2.4 编辑测试接口

在这里插入图片描述

在这里插入图片描述

此时我们开始接触面向接口编程,因为持久层直接调用处理业务类耦合度太高,所以引入接口的概念,持久层调用接口,实现类实现接口,进行耦合度的分离。

2.2.5 编辑Mybatis测试类

在这里插入图片描述

package com.study;

import com.study.mapper.UserMapper;
import com.study.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

class SpringbootDemo2ApplicationTests {
    /**
     * 核心问题: SqlSession 理解为Mybatis操作数据的连接
     * 1. 通过 SqlSessionFactoryBuilder 构建SqlSessionFactory
     */
    @Test
    public void testMyBatis() throws IOException {
        //1.定义核心配置文件的路径
        String resource = "mybatis/mybatis-config.xml";
        //2.通过工具API读取资源文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //4.获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5.获取Mapper的接口对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //6.调用接口方法 获取返回值数据
        List<User> userList = userMapper.findAll();
        System.out.println(userList);
        //7.连接用完记得关闭
        sqlSession.close();
        inputStream.close();
    }

}

2.2.6 运行查看测试结果

我们当前面向接口进行测试,所以不能借助spring框架,所以要去掉测试类上的@SpringBootTest注解,单独运行我们的测试方法,查看测试结果:

在这里插入图片描述

2.3 常见错误总结

2.3.1 resultType错误

请添加图片描述
请添加图片描述

resultType错误,在输入时,一般会自动提示后续路径,建议根据提示输入。

2.3.2 namespace 命名错误

请添加图片描述

检查UserMapper.xml文件中的namespace 命名空间即可。
在这里插入图片描述

2.3.3 mybaits关联mapper映射文件异常

说明: 检查mybatis.config.xml文件中的resource路径请添加图片描述
请添加图片描述

3.简化测试操作

目前我们在测试时,测试类的代码还是十分的繁琐,其获取SqlSession以及关闭连接完全可以封装起来,接下来我们使用AOP的思想,将其封装,我们在测试类中完成下列代码进行简化测试操作:

package com.study;

import com.study.mapper.UserMapper;
import com.study.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;


class SpringbootDemo2ApplicationTests {

    /**
     * 设计思路:
     *   1.要求每次执行测试方法时 都先生成一个SqlSessionFactory
     *   2.从sqlSessionFactory中获取sqlSession
     *   3.完成业务操作
     *   注解说明:
     *      @BeforeEach 当每次执行@Test注解方法时,都会先执行该方法.
     */
    private SqlSessionFactory sqlSessionFactory;
    @BeforeEach
    public void init() throws IOException {
        String resource = "mybatis/mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    }

    @Test
    public void testFind2(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.findAll();
        System.out.println(userList);
        sqlSession.close();
    }

    /**
     * 核心问题: SqlSession 理解为Mybatis操作数据的连接
     * 1. 通过 SqlSessionFactoryBuilder 构建SqlSessionFactory
     */
    @Test
    public void testMyBatis() throws IOException {
        //1.定义核心配置文件的路径
        String resource = "mybatis/mybatis-config.xml";
        //2.通过工具API读取资源文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //4.获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5.获取Mapper的接口对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //6.调用接口方法 获取返回值数据
        List<User> userList = userMapper.findAll();
        System.out.println(userList);
        //7.连接用完记得关闭
        sqlSession.close();
        inputStream.close();
    }

}

我们运行testFind2()方法,查看执行结果:
在这里插入图片描述

MyBatis-3.2.2框架完整包下载指南 本文还有配套的精品资源,点击获取 简介:MyBatis-3.2.2是一个强大的Java持久层框架,它提供了定制化SQL、存储过程和高级映射能力,极大地简化了JDBC代码。用户可以通过XML或注解进行简单配置,将Java对象映射到数据库记录。此版本的压缩包包含了框架的核心组件、依赖库、日志模块、文档示例、配置文件等,以帮助开发者实现高效、面向对象的数据库操作。 1.... 阅读详情

相关推荐

SSM框架实战:Struts2+Spring3+Mybatis应用开发

本文还有配套的精品资源,点击获取 简介:Struts2、Spring3和MyBatis是构建Java企业级Web应用的三大主流框架,即SSM框架。本简介介绍这些框架的基础概念、核心功能和在SSM整合中的应用。同时提供了一个实用的学习路线图,以实现从基础到实战的过渡,包括用户注册、登录功能的开发等。 1. SSM框架组合简介 1.1 SSM框架的定义与组成 ...

weixin_32099703的博客 1024

MyBatis基本概述

1.mybatis概述 1.1mybatis发展过程: jdbc->dbutild(queryRunner)->jdbcttemplate:工具,过程:编写sql->预编译->设置参数->执行sql->封装结果 框架:整体解决方案 hibernate:全自动全映射orm(object relation mpping):旨在消除s...

wx_0194的博客 355

MyBatis 3.2.3中文版SDK

MyBatis3.2.3帮助文档(中文版),开发时查看下,挺方便的

Mybatis总结

Mybatis增删改查、核心配置文件,映射 一、框架简介 软件开发常用的架构是三层架构,之所以流行是因为有着清晰的任务划分。一般包括以下三层: 持久层:主要完成与数据库相关的操作,即对数据库的增删改查。 因为数据库访问的对象一般称为Data Access Object(简称DAO),所以有人把持久层叫做DAO层。 业务层:主要根据功能需求完成业务逻辑的定义和实现。 ​ 因为它主要是为上层提供服务的,所以有人把业务层叫做Service层或Business层。 表现层:主要完成与最终软

wfqiaodaima的博客 1183

mybatis-spring-1.3.0.jar 下载

这个jar包是根据源码打的,亲测过,好使,拿出来和大家分享一下。

【实用教程】使用AlphaFold2进行蛋白质结构在线预测

使用Colab进行简单快速的AlphaFold2在线的蛋白质三维结构预测

Eumenidus的博客 14万+

mybatis配置

mybatis框架的搭建

m0_65748133的博客 291

Cadence Virtuoso里搞定斩波运放AC仿真:PSS+PAC保姆级设置避坑指南

然而,当工程师们尝试在Cadence Virtuoso环境中对这种特殊结构进行AC特性分析时,往往会遇到传统AC仿真方法失效的困境——这正是PSS(Periodic Steady-State)与PAC(Periodic AC)仿真组合大显身手的场景。实际项目中我们常采用"先快后精"的两步法:先用快速设置确认大体趋势,再针对关键频段进行精细仿真。例如某次设计迭代中,将harmonics从10增加到20后,发现在1MHz处的相位裕度估算误差达15°,这解释了之前样机测试时的振荡问题。

weixin_33508411的博客 446

springboot-2.3 mybatis

一 .添加依赖 二.动态sql 1.直接在方法名上写sql(不推荐) 2.使用Provider 或者Provider中使用new SQL()编写 在mapper中调用 3.使用xml (推荐) application.properties中配置xml路径: #mybatis配置 mybatis.mapper-locations=classpath:com/study/springboot...

LGD 1910

Linux系统中u-boot启动流程分析(详解)

代码部分,具体如下;

嵌入式技术开发 1980

光学材料仿真软件:FDTD Solutions_(4).材料属性的定义与应用

在光学材料仿真软件中,材料属性的定义和应用是至关重要的一步。正确地定义材料属性可以确保仿真结果的准确性和可靠性。本节将详细介绍如何在FDTD Solutions中定义和应用不同的材料属性,包括介质材料、金属材料、色散材料等,并提供具体的代码示例和数据样例。介质材料是光学仿真中最常见的材料类型之一。在FDTD Solutions中,可以通过多种方式定义介质材料,包括使用预定义的材料库、自定义材料参数或导入材料数据文件。FDTD Solutions内置了一个丰富的材料库,包含了许多常用材料的光学性质。

kkchenjj的博客 1391

MyBatis依赖

1、版本 <mybatis.version>3.2.3</mybatis.version> 2、依赖 <!--mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>...

jxin 1万+

国科大学习资料--机器学习方法与应用(叶齐祥)-期末考试题整理

国科大学习资料–机器学习方法与应用-期末考试题整理 ============================================================================================================================================================================================ =======================================

无名何许人的博客 2846

mybatis mysql upsert_SpringBoot2.3.4+Mybatis+Phoenix操作HBase2.0.6

SpringBoot2.3.4+Mybatis+Phoenix操作HBase2.0.61、环境说明使用单机版安装的hbase,版本为2.0.6,phoenix-core的版本使用5.0.0-HBase-2.0需与hbase版本匹配,使用mybatis直接操作hbase,大部分语法与操作mysql相同,有小部分差异,如insert or update在此需改为upsert表示插入或更新,同时不支持批...

weixin_42364040的博客 634

最新Python爬虫实战(入门爬虫篇)——案例3:爬取二次元cos图片批量下载到本地(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了二次元图片的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖“请求列表页→提取详情页URL→请求详情页→提取图片链接→保存图片”的完整流程,与豆瓣案例的核心逻辑和格式完全对齐。学习重点包括:抓包工具定位多层级数据源、正则表达式匹配复杂链接、模拟请求头绕过反爬机制、文件名安全处理及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践,帮助学习者掌握多层级页面爬取的核心逻辑。

努力让自己发光,对的人才能迎着光而来 14万+

【NI Multisim 14.0编辑环境——项目管理器】

主窗口包括标题栏、菜单栏、工具栏、工作区域、电子表格视图(信息窗口)、状态栏及项目管理器7个部分。 上期我们了解了工具栏,今天我们继续了解项目管理器。 一、项目管理器 在原理图设计中经常用到的工作面板有“设计工具箱”面板、“SPICE网表查看器”面板及“LabVIEW 协同仿真终端”面板。 1.“设计工具箱”面板 基本位于工作界面左侧,主要用于层次电路的显示。启动软件,默认创建的“设计1”以分层的形式显示出来。 那么如何打开“设计工具箱”面板呢?如图所示:在该面板中显示 SPICE 网表的输入,输出

RL2698853114的博客 2020

mybatis-plus3.5.2jar包下载仓库:简化数据库操作的强大工具

mybatis-plus3.5.2jar包下载仓库:简化数据库操作的强大工具 【下载地址】mybatis-plus3.5.2jar包下载仓库 此开源项目提供了MyBatis-Plus 3.5.2版本的常用jar包,包括核心组件、注解、扩展功能及代码生成器等。这些jar包为开发者提供了强大的数据库操作能力,极大简化了数据访...

gitblog_06771的博客 842

Windows配置L2TP/IPsec连接

Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。

m0_61806534的博客 1653

学习springboot第3步,Mybatis操作数据库2

Springboot操作数据库用Mybatis框架,好像有点意犹未尽,是不是可以和Hibernate + JPA 的方式一样,简单一点,不搞什么XML文件,嗯,是的,可以不需要。就是接口类的写法稍微有点不一样。 为了学习效果更好一点,在这里把代码都放出来,方便大家运行代码 首先,当然是SpringBootApplication启动入口 package com.s...

知行合一 266

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Mybatis plus 3.2】怎么操作?看看我!(update、limit、between)

必须是springboot工程 在pom.xml中添加 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> ...

BIG BOSS的博客 8746

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mybatis3.4.2 与 JDBC中操作对象映射的过程

mybatis是对 jdbc 的封装。如果想要知道mybatis到底做了哪些事情,必须了解jdbc如何对数据库进行操作的,以及这些操作mybatis是如何实现的。一、JDBC 操作数据库的过程下面代码直接使用 JDBC 进行数据库操作1、创建数据库连接public Connection getConnection() throws SQLException { Connection conn

王洪伟的专栏 6112

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Mybatis的下载和使用

https://github.com/mybatis/mybatis-3/releases 复制当前链接,点击进去 点击红色的,下载: 其中lib文件是mybatis 的依赖包,mybatis-3.4.2.jar是mybatis的核心包,PDF文件是说明文档。 lib文件中的内容就是这些。 使用:只需要将核心包和依赖包导入到工作路径即可。 ...

一夜奈何梁山 771

学习整理====》Spring3.2+MyBatis3

Spring3.2整合MyBatis,我的Spring版本是3.2,MyBatis版本是3.0.4。 1.建工程,建包。 2.建立测试表:使用MySQL数据库 ##数据库的脚本 drop table if exists stu; create table stu( sid int primary key auto_increment, sname varchar(32), ...

herozk的博客 109

基于Spring Boot集成MyBatis-3.5.9操作数据库

记录:382 场景:在Spring Boot 2.6.3中集成MyBatis 3.5.9操作数据库。实现MyBatis的查、增、改、删操作数据库示例。

zhangbeizhen18的博客 1209

崛起于Springboot2.X之Mybatis-xml方式操作mysql数据库(3)

为什么80%的码农都做不了架构师?>>> ...

weixin_34100227的博客 165
上一篇: 1.4 Spring基础知识
下一篇: 2.4 MyBatis的CRUD操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值