Mybatis-Mapper代理开发

Mapper代理开发

  • 目的
  • 使用Mapper代理方式入门
    • 1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
      • 首先新建一个Mapper接口
      • 编译mybatis-demo
      • 更改sql映射文件路径
    • 2.设置SQL映射文件的namespace属性为Mapper接口全限定名
    • 3.在Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
    • 4.编码
    • 细节

以下代码建立在上篇博客Mybatis快速搭建的基础上,没有搭建或者忘记如何搭建的可以去跟着搭建一下子Mybatis快速搭建

目的

  • 解决原生方式中的硬编码
    原先编码执行sql语句要在main方法中写死查询语句的id,且每个语句的id都是不一样的,这样再去main方法中写的时候就会写很多个id,麻烦且复杂,用Mapper代理开发就可以解决这个问题
  • 简化后期执行sql
    区别就是之后不用再修改代码,修改配置文件即可

使用Mapper代理方式入门

1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下

首先新建一个Mapper接口

新建一个UserMapper接口,再在resources文件夹下新建一个com.svt.mapper,但是不能直接写com.svt.mapper,资源文件夹会认为com.svt.mapper就是你这个文件夹的名字,要在新建Directory的时候写com/svt/mapper,这样就能分成三级了
在这里插入图片描述

编译mybatis-demo

这里直接执行会出错,可以使用一个maven helper插件,使用里面的run maven进行编译
插件可以在idea内下载
File->Settings->Plugins->进行搜索maven helper
在这里插入图片描述
下载之后重启idea即可使用,我们编译一下子
在这里插入图片描述
出来的结果有编译成功的文件夹名,这时候我们就可以去对应目录下看是否已经成功放在同一目录下
在这里插入图片描述
像这样就已经成功完成第一步啦
在这里插入图片描述

更改sql映射文件路径

还有个小细节,此时资源路径已经更改,所有在mybatis-config.xml文件里我们需要修改一下加载sql映射文件的路径,右击UserMapper.xml文件选择Copy Relative Path,直接粘贴到路径内

<!--加载sql映射文件--><mapper resource="com/svt/mapper/UserMapper.xml"/>

2.设置SQL映射文件的namespace属性为Mapper接口全限定名

前一个博客内写的命名空间是test,比较随意,这里就需要将test改为自己定义的mapper接口路径

<mapper namespace="com.svt.mapper.UserMapper">

在这里插入图片描述

3.在Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致

在UserMapper接口中写一个和id名一样的方法

User selectAll();

但此时有个小细节,之前写的查询语句查询的是整张表的数据,查询的是一个集合,这时候我们就需要用一个集合来接收数据,所有方法的类型是List集合,里面放的是一个一个user对象

public interface UserMapper {List<User> selectAll();
}

4.编码

通过 SqlSession的 getMapper方法获取 Mapper接口的代理对象
调用对应方法完成sql的执行

  • 代码实现
/*** Mybatis 代理开发*/
public class MybatisDemo2 {public static void main(String[] args) throws IOException {//1.加载mybatis核心配置文件,获取 SqlSessionFactory 对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取 SqlSession 对象,用它执行 SQL 语句SqlSession sqlSession = sqlSessionFactory.openSession();//3.执行sql//3.1获取UserMapper接口的代理对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> users = userMapper.selectAll();System.out.println(users);//4.释放资源sqlSession.close();}
}
  • 执行结果
    在这里插入图片描述

细节

如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载
在这里插入图片描述

<!--Mapper代理方式--><package name="com.svt.mapper"/>

以后像这样的xml文件还会有很多,我们就可以使用扫描的方式进行加载,扫描一下对应的包就可以直接夹在里面所有的xml文件,不用再一个一个加载了

至此Mapper代理开发就阐述完毕,一起实现一下子吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327479.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序媛的mac修炼手册-- 靠谱的数据源网站

啊&#xff0c;今天还是要给大伙儿安利些干货&#xff0c;方才对得起大伙儿的关注支持啊&#xff5e; 我最开始用Mac&#xff0c;主要是做数据分析的。包括R语言、Python语言&#xff0c;这些分析工具在Mac上运行地都很流畅。但我很少用Mac自带的电子表单应用程序Numbers&…

QtApplets-SystemInfo

QtApplets-SystemInfo ​ 今天是2024年1月3日09:18:44&#xff0c;这也是2024年的第一篇博客&#xff0c;今天我们主要两件事&#xff0c;第一件&#xff0c;获取系统CPU使用率&#xff0c;第二件&#xff0c;获取系统内存使用情况。 ​ 这里因为写博客的这个本本的环境配置不…

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地&#xff08;默认是端口 3000&#xff09;部署 ChatGPT-Next-Web&am…

【EI会议征稿通知】2024年第九届智能计算与信号处理国际学术会议(ICSP 2024)

2024年第九届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09; 2024年第八届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09;将在西安举行&#xff0c; 会期是2024年4月19-21日&#xff0c; 为期三天, 会议由西安科技大学主办。 欢迎参会&…

2024年【危险化学品生产单位主要负责人】复审模拟考试及危险化学品生产单位主要负责人作业模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位主要负责人复审模拟考试为正在备考危险化学品生产单位主要负责人操作证的学员准备的理论考试专题&#xff0c;每个月更新的危险化学品生产单位主要负责人作业模拟考试祝您顺利通过危险化学品…

“性能压测揭密:关键指标分析!“

在进行全链路压测和性能测试时&#xff0c;需要关注多个关键性能指标&#xff08;KPIs&#xff09;来评估系统的性能表现&#xff0c;以下是一些常见的性能测试指标。 1. 吞吐量&#xff08;Throughput&#xff09; 系统在单位时间内能够处理的请求数量或事务数量&#xff0c…

深入了解Apache 日志,Apache 日志分析工具

Apache Web 服务器在企业中广泛用于托管其网站和 Web 应用程序&#xff0c;Apache 服务器生成的原始日志提供有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的重要信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事…

大模型与大模型的幻觉问题

参考 大模型中的涌现 OpenAI 科学家&#xff1a;幻觉是大模型与生俱来的特性&#xff0c;而非缺陷 大模型「幻觉」&#xff0c;看这一篇就够了&#xff5c;哈工大华为出品 大模型 什么是大模型 大语言模型&#xff08;LLM&#xff09;是基于海量文本数据训练的深度学习模型…

「Verilog学习笔记」编写乘法器求解算法表达式

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule calculation(input clk,input rst_n,input [3:0] a,input [3:0] b,output [8:0] c);reg [8:0] data1, data2 ; assign c data2 ; always (posed…

SpingBoot的项目实战--模拟电商【4.订单及订单详情的生成】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.功能需求 二.代码编写 …

COMSOL 各版本安装指南

COMSOL下载链接 https://pan.baidu.com/s/1Z7kaOhyenAOsEqzG57PwhQ?pwd0531 1.鼠标右击【COMSOL6.2(64bit)】压缩包(win11及以上系统先点击“显示更多选项”&#xff09;选择【解压到 COMSOL6.2(64bit)】。 2.鼠标右击【setup】选择【以管理员身份运行】。 3.选择【简体中文…

(04)刻蚀——选择刻蚀材料创建所需图形

01、光“堆叠”可不行 前期我们了解了如何制作“饼干模具”。本期,我们就来讲讲如何采用这个“饼干模具”印出我们想要的“饼干”。这一步骤的重点,在于如何移除不需要的材料,即“刻蚀(Etching)工艺”。 ▲ 图1: 移除饼干中间部分,再倒入巧克力糖浆 让我们再来回想一下…