Mybatis超级方便操作数据方式(注解+封装mapper接口)!!!

深入解析MyBatis Mapper接口工作原理 在Java持久层框架中,MyBatis以其灵活性和易用性赢得了广大开发者的青睐。作为MyBatis的核心概念之一,Mapper接口机制极大地简化了数据库操作代码的编写。本文将深入剖析MyBatis Mapper接口的工作原理,从基础概念到底层实现,帮助开发者更好地理解和使用这一强大特性。 阅读详情

Mybatis作为一个流行的持久层框架,其优化了Java程序与数据库的交互过程。它的核心在于使用Mapper接口与XML映射文件或注解绑定来实现对数据库的操作。这种方式不仅简化了数据库操作,还提升了开发效率,使得开发者可以从繁琐的JDBC代码中解放出来,将更多的精力放在业务逻辑上。

在他的多种方式中我来介绍一种简便的方法,告别繁琐的数据操作!

该方法使用的是注解:

第一步:创建Mapper接口(存放需要执行的SQL语句and方法)

public interface Mapper {
    @Insert("insert into student values(#{sno},#{name},#{sex},#{age},#{major})")
    int insert(Student stu);

    @Delete("delete from student where sno=#{sno}")
    int delete(Integer Sno);

    @Update("update student set major=${major} where sno=${sno}")
    int update(Student stu);

    @Select("select * from student")
    ArrayList<Student> selectAll();

}

第二步:创建并配置mybaits配置文件

<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
<!--        这里的写的是mapper映射文件-->
        <mapper class="day1.Dao.Mapper"/>

    </mappers>
</configuration>

第三步:创建getMapper类(自己封装的类:用于获取SqlSession和mapper)

直接复制粘贴我的代码就可以

public class GetMapper implements Mapper {//1:这里实现你的Mapper接口
    public static SqlSession session;
    public static Mapper mapper;//2:这里的Mapper修改为你的Mapper接口的名字

    static {
        try {
            session = getSession();
        //3:这里的Mapper.class修改为你的Mapper接口的名字.class
            mapper = session.getMapper(Mapper.class);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static SqlSession getSession() throws IOException {
        InputStream in = Resources.getResourceAsStream("mybatis/config/mybatis_config.xml");
        SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession = fac.openSession();
        return sqlSession;
    }
    //ctrl+o实现Mapper接口中的方法,增删改记得写commit提交事务。
    //举个栗子--其他省略了
  @Override
    public int insert(Student stu) {
        int insert = mapper.insert(stu);
        session.commit();
        return insert;
    }
}

使用方式:实例化对象后调就完了

//实例化对象让静态代码块跑一下 
GetMapper getMapper = new GetMapper();
//直接调用操作方法
getMapper.delete(Integer.valueOf(Sno));

深入浅出MyBatis:Mapper接口的工作原理与使用流程 摘要:本文详细介绍了MyBatis框架中Mapper接口的工作原理及使用流程。Mapper接口通过动态代理机制实现SQL与Java代码解耦,核心组件包括MapperProxy、MapperMethod和MappedStatement。文章提供了从创建数据库、项目配置到测试的完整开发流程,重点讲解了动态代理实现原理和MyBatis配置文件设置,并对比了两种字段映射方式。通过理解这些机制,开发者可以更高效地使用MyBatis构建数据访问层,实现SQL与代码的优雅分离。(150字) 阅读详情

相关推荐

MyBatis-Plus之内置接口&Service接口&Mapper接口

Service CRUD 接口说明:通用 Service CRUD 封装接口,进一步封装 CRUD 采用get 查询单行remove 删除list 查询集合page 分页前缀命名方式区分Mapper层避免混淆,泛型T为任意实体对象建议如果存在自定义通用 Service 方法的可能,请创建自己的继承提供的基类对象Wrapper为。

qq_73126462的博客 2396

使用mybatis封装结果集

在数据库中命名字段名的时候经常会使用到下划线 "_",然而在实体类中往往不写下划线,所以可以使用mybatis对其进行封装resultMap的id要与select语句中的resultMap相对应property为实体类表中的字段名字,column为数据库中的字段名。

xiaochen111c的博客 554

Mybatis专题三__用接口和注解来代替Mapper映射文件进行扩展

在之前我们学习的专题一当中,我们通过Mapper映射文件写的SQL语句来对数据库表中的数据进行查询处理。而现在我们将要学习的是利用接口和注解来代替之前我们写的Mapper映射文件(中的SQL执行数据库的语句)。 在上一次的课程中我们已经学会了操作简单的查询操作。我们采取的方式是通过sqlseesion的实例直接操作User.xml中映射的sql语句(Mapper映射文件)。 在今天的学习中我们...

qq_40965783的博客 874

mybatis中Mapper接口调用的参数封装

接着我们上一次分享的mybatis源码阅读,这次我将通过阅读去了解我们在调用自己写的mapper接口的时候,mybatis具体是怎样与数据库交互的。 mapper接口的代理对象 大家都知道我们通过@mapper注解声明了mybatis的mapper接口,然后通过调用接口方法就能查询数据库。通过之前mybatis源码阅读文章,我们知道其实我们获取到的接口实现类是动态代理MapperProxy对象,而...

思考的力量 1022

S7-200SMART系列全套接线说明

SMART200接线方法,输入,输出,模拟量,面板,扩展糟等,并且详细说明接线原理。

文都龙哥 1万+

VScode+MPLAB AI助手:Microchip MCU开发全流程实战解析

本文详细解析了如何使用VScode搭配MPLAB AI助手进行Microchip MCU开发的完整流程。从环境配置、工程创建到代码生成与调试,全面介绍了AI助手在提升开发效率、优化代码和故障排除方面的实际应用,为嵌入式开发者提供了一套高效的开发解决方案。

hh234的博客 1130

手动实现Mybatis @Mapper

总所周知Mybatis的dao接口是没有接口实现的,那我们在调用的时候是什么样的过程呢?接下来一起看一下Mybatis是怎么实现的,以查询为例。 创建所需要的注解 @Mapper package ds.young.spring.ioc.annotation; import org.springframework.stereotype.Component; import java.lang.annotation.*; @Target({ElementType.TYPE}) @Retention(Rete

weixin_43408362的博客 1217

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1470

Mybatis注解开发:使用注解实现一对一、一对多、多对多查询

Mybatis注解开发:使用注解实现一对一、一对多、多对多查询 1、 MyBatis的常用注解 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper 映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Ma

丿涛哥哥的博客 1万+

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2012

【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01

基于wrf-python处理wrf运行结果wrfout_d01

WW、forever的博客 5207

Mybatis第二天

MyBatis 是一个基于 Java 的持久层框架,它提供了多种方式来使用缓存,包括一级缓存和二级缓存。本文将介绍 MyBatis 中常见的缓存使用方式及其使用方法。除了使用 MyBatis 提供的缓存实现类以外,还可以自定义缓存实现类。下面是一个简单的自定义缓存实现类示例:在上面的示例代码中,实现了 MyBatis 的 Cache 接口,使用了一个 HashMap 作为缓存实现。要使用自定义缓存,需要在配置文件 mybatis-config.xml 中进行配置。

c3343466419的博客 208

YOLOv11 改进 - C2PSA | C2PSA融合Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLOv11中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLOv11中。

魔改工程师的博客 403

案例:基于MyBatis注解的学生管理程序

案例:基于MyBatis注解的学生管理程序一、任务目标(1)MyBatis注解实现查询操作(2)MyBatis注解实现修改操作(3)MyBatis注解实现一对多查询二、【实现步骤】:MyBatis注解实现查询操作1.项目搭建2.数据库准备3.POJO类准备4.创建Mapper接口5. 修改mybatis-config.xml核心配置文件6.编写MyBatisUtils工具类7 编写测试方法三、【实现步骤】:MyBatis注解实现一对多查询1. 修改Mapper接口2. 修改mybatis-config.xm

青衣小屋 1万+

DeerFlow 系列教程 第十八篇 | 实战案例三——用 DeerFlow 构建自定义 AI 工作流

在实际业务中,许多复杂的内容生产任务不是单一技能就能覆盖的。需要先调研某个主题的最新信息基于调研结果撰写结构化的文章或报告对报告中的数据进行可视化处理最终输出符合品牌风格的排版文档或演示文稿这些环节涉及不同的领域知识和工具链,单个内置技能无法完全覆盖。组合自定义技能、MCP 外部工具和多 Agent 协作,构建端到端的工作流。传统手工流程: DeerFlow 自定义工作流:搜索资料、阅读文献 用户描述需求│ │▼ ▼。

weixin_43674738的博客 204

Debezium 性能调优实战:吞吐量、延迟与资源平衡

摘要: 本文分享了团队如何通过系统性调优将Debezium从初始3,200 TPS/2.8秒延迟提升至15,200 TPS/210ms延迟的实战经验。优化涵盖四个层面:1)Debezium连接器配置(批处理、快照并行、消息精简);2)Kafka分区策略与Avro序列化缓存;3)JVM改用ZGC及OS参数调优;4)MySQL的binlog与I/O优化。关键发现包括分区数黄金公式、sync_binlog调整带来56%的I/O负载下降,以及避免盲目增大队列内存等陷阱。最终实现吞吐量提升4.75倍,并强调性能调优需

爱丹丹的博客 357

MyBatis中的Mapper接口和Executor组件的理解

核心逻辑:二级缓存是 “跨 SqlSession” 的缓存,由CachingExecutor(装饰器模式)代理具体 Executor(如SimpleExecutor)实现,缓存数据存储在Cache对象中(默认是PerpetualCache,本质也是 Map),且按Mapper接口隔离(每个 Mapper 有自己的缓存)。Mapper 是 “请求入口”(封装业务调用),Executor 是 “执行核心”(处理 SQL 交互),二者通过MappedStatement衔接,完成从方法调用到数据库操作的全流程。

m0_74776907的博客 1265

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Mapper 编写有哪几种方式, 使用MyBatis的mapper接口调用时有哪些要求,接口绑定有两种实现方式, MyBatis高级查询

虽然Mybatis解析Xml映射文件是按照顺序解析的,但是,被引用的B标签依然可以定义在任何地方,Mybatis都可以正确识别。原理是,Mybatis解析A标签,发现A标签引用了B标签,但是B标签尚未解析到,尚不存在,此时,Mybatis会将A标签标记为未解析状态,然后继续解析余下的标签,包含B标签,待所有标签解析完毕,Mybatis会重新解析那些被标记为未解析的标签,此时再解析A标签时,B标签已经存在,A标签也就可以正常解析完成了。

weixin_44797327的博客 1481

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MyBatis中Mapper接口的工作原理

MyBatis的Mapper接口通过动态代理机制实现数据库操作,其核心原理是:接口方法通过XML或注解配置SQL语句,运行时由JDK动态代理生成接口实例,拦截方法调用并自动解析namespace、方法名和参数,转换为底层SqlSession操作。这种方式封装了JDBC细节,简化了数据库访问,但需要注意Mapper接口不支持方法重载。整个流程包括定义规则、生成代理、解析信息、执行SQL和返回结果,体现了MyBatis在SQL灵活性和开发便捷性之间的平衡。

2301_80008738的博客 1072

MyBatis Mapper接口绑定技术解析

Override@Override@Override@Override@Override// Mapper方法MyBatis的Mapper接口绑定是MyBatis框架的核心特性之一,它提供了灵活的配置方式和强大的功能。XML配置方式的基础和高级用法注解配置方式的基础和高级用法动态SQL的各种标签和用法参数绑定的各种方式和技巧性能优化的各种方法和实践。

我是Java程序员廖志伟,感谢朋友们的支持! 1043

Mybatis注解开发

这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result 一起使用,封装多个结果集@One:实现一对一结果集封装@Many:实现一对多结果集封装。

weixin_46532941的博客 5428

MyBatis Mapper接口绑定解析

在软件开发过程中,数据库操作是不可避免的环节。想象一下,一个程序员正坐在电脑前,眉头紧锁,手指在键盘上快速敲击,屏幕上代码一行行地涌现。突然,他停下了手中的动作,双手抱胸,眼睛直勾勾地盯着屏幕,嘴里嘟囔着:“哟呵,这需求得去数据库里捞点数据出来。”以往,手动与数据库打交道,那可真是麻烦得很,各种连接配置、SQL语句,想想都让人头疼。然而,随着MyBatis框架的引入,这一切都变得简单起来。MyBatis的核心知识点之一就是Mapper接口绑定,其中接口定义是至关重要的环节。

JavaCodePro的博客 1093

MyBatis核心源码解析 从SqlSession到Mapper接口的绑定过程

摘要:本文深度解析MyBatis框架的核心原理与最佳实践。从架构总览、SqlSession创建机制到Mapper动态代理实现,详细剖析了SQL执行链路、缓存机制和插件原理。通过源码分析揭示MyBatis内部工作原理,包括Configuration加载、Executor调度和StatementHandler执行过程。针对常见性能问题提供优化方案,如批量操作、分页查询和缓存使用技巧。最后总结企业级开发中的"MyBatis军规",包括SQL编写规范、缓存策略和监控方案,帮助开发者规避典型陷阱,

七夜zippoe的博客 2147

使用MyBatis的mapper接口调用时的要求

使用 MyBatis 的 Mapper 接口进行数据库操作时,有一系列的要求和最佳实践需要遵守。首先,接口方法应与 XML 映射文件中的 SQL 语句保持一致,方法的参数和返回类型也需要与 SQL 查询结果相匹配。其次,在处理复杂查询或映射时,可以使用resultMap或注解方式进行精确控制。此外,开发者还需要注意接口的命名、方法的重载问题以及安全性等方面的事项。

Flying_Fish_roe的博客 1100

MyBatis深入探索:原生API与注解方式实现CRUD操作

1. 别名是为 Java 类型命名一个短名字。它只和 XML 配置有关,用来减少类名重复的部分2. 如果指定了别名,我们的MappperXxxx.xml 文件就可以做相应的简化处理3. 注意指定别名后,还是可以使用全名的4. 举例说明。

业精于勤,荒于嬉 1251

【MyBatis Plus】Service && Mapper内置接口讲解

该博文主要写给那些刚学习使用mybatis-plus的同志,不知道mybatis-plus有那些内置的方法的,有了这篇文章大概对mybatis-plus所提供的方法有一定的认知和理解,相信在项目的运用中可以更加的得心应手!!

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 3374
上一篇: Day13--JavaWeb学习之Servlet后端渲染界面
下一篇: 介绍Servlet后端中两种接收参数方式req.getAttributer和req.getParameter的区别
IT ·南栀
博客等级 码龄6年 415粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT ·南栀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值