Java中mybatis的Mpper代理开发的详细使用步骤

news2025/7/25 7:07:33

目录

前言: 

 一、全图预览

二、使用步骤 

1.pom.xml里面添加依赖包  

2.新建统一配置文件(俗称数据库连接文件)

3.新建项目

 4.新建映射文件(俗称数据库对应表xml)

 5.测试

 三、文中的全部代码(去复制可用)


前言: 

mybatis使用Mapper代理开发会更加的方便,一般推荐这样的方式,形式和mapper常规使用也差不多

其他说明:还有注解的方式可以调用,不过注解的方式只能应用于简单的sql语句,复杂的语句就要用文中的xml调用方式了

前文阅读(有必要) 

使用配置:

以下的安装配置的超链接,如有需要可用去查看

IDEA:2022

JDK:17

项目结构:maven

图中小鸟插件:mybatisx

一、全图预览

 

二、使用步骤 

1.pom.xml里面添加依赖包  

先在maven架构的pom.xml里面添加要使用的mybatismysql两个依赖(俗称jar包)

    <dependencies>
        
        <!--mybatis依赖包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
 
        <!--mysql依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        
    </dependencies>

 如图所示:

2.新建统一配置文件(俗称数据库连接文件)

(1)在resources下--新建--文件(选择第2个)---mybatis-config.xml

ps:这里面是用来连接数据库的统一配置文件 

(2)把这个配置信息添加到这个新建的配置文件里面

 ps:这个配置文件在mybatis官网的入门那里有 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://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"/><!--改:数据库的固定连接,老版本不用cj-->
                <property name="url" value="jdbc:mysql://localhost:3306/javafx"/><!--改数据库的要连接的库-->
                <property name="username" value="root"/><!--改:数据库的账号-->
                <property name="password" value="123456"/><!--改:数据库的密码-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载映射文件-->
        <mapper resource="com/project/Mapper/boyMapper.xml"/><!--改:把映射文件的源根路径复制到这里-->
    </mappers>
</configuration>

 如图所示:

3.新建项目

(1)要在java的项目下面建立2个包,一个是接口包Mapper,一个是封装包pojo

 com.project:项目名

Mapper:接口包

pojo:实现类包

(2)

封装包pojo里面建立一个和数据库对应的封装类--Boy

接口包Mapper下建立一个接口--boyMapper

ps:数据库图(这个是为了方便对应参考,知道那些类名是怎么来的)

 Boy里面是封装属性。然后快捷键生成的set和get、构造方法、toString)

boyMapper(接口起这个名字是为了和接下来的resources里面的xml映射文件名一样)

ps:并在接口里面定义一个查询全部的集合方法-

 4.新建映射文件(俗称数据库对应表xml)

(1)在resources下--新建--目录包---com/project/Mapper

格式:

新建一个目录包和接口包一样的名称就好了。建立输入时候注意:小点那个要用/代替才能建立成功

ps:这样做的目的就是为了xml文件和接口包在同一个文件下

如图所示 

(2)在resources下新建好的包下建立一个boyMapper.xml文件,并在里面写上对应的映射方法

格式

数据库要操作对应的表名Mapper.xml,以后数据库的操作语句都在这个映射文件里面写就好了

 添加进去的映射方法 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--映射查询方法-->
<mapper namespace="com.project.Mapper.boyMapper"><!--namespace=对应接口的全部路径-->
    <select id="selectAll" resultType="com.project.pojo.Boy"><!--参数一:接口对应的方法名    参数二:封装类的详细地址-->
        select * from boy;<!--要执行的sql语句-->
    </select>
</mapper>

如图所示

 5.测试

 编写一个测试类,放哪里测试都可以(我在pojo里面建立)

package com.project.pojo;

import com.project.Mapper.boyMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class BoyTest {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis连接文件(核心配置文件)
        String resource = "mybatis-config.xml";//这是连接数据库的统一配置xml文件
        InputStream inputStream = Resources.getResourceAsStream(resource);//固定写法
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//固定写法

        //2.获取SqlSessionFactory对象--固定写法
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.执行sql语句
        //接口 自定义接口名 = sqlSession.getMapper(接口.class);
        boyMapper boyMapper = sqlSession.getMapper(boyMapper.class);

        //接口里面的方法
        List<Boy> boyAll = boyMapper.selectAll();

        //4.打印语句
        System.out.println(boyAll);

        //5.释放资源--固定写法
        sqlSession.close();
    }
}

运行结果:

[boy{id=1, name='小明', age=18}, boy{id=2, name='小美', age=19}] 

 三、文中的全部代码(去复制可用)

超链接 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL如何保证主备一致?

1. MySQL主备的基本原理 如下图展示的是基本的主备切换流程&#xff1a; 在状态1中&#xff0c;主库是A&#xff0c;备库是B&#xff0c;所以客户端的读写都直接方法节点A。由于节点B是节点A的备库&#xff0c;所以备库B只是将A的更新都同步过来&#xff0c;本地执行&#x…

皕杰报表使用字体和部署后添加字体

Windows系统 1、打开Win10系统的字体安装文件夹&#xff0c;可以双击打开此电脑-->打开C盘-->打开Windows-->打开Fonts&#xff1b;也可先打开计算机&#xff0c;在计算机地址栏上直接拷贝“C:WindowsFonts”路径。回车打开Win10字体文件夹。 2.下载自己需要的字体。…

数组、链表、栈、队列、树

1. 数组&#xff08;Array&#xff09; 定义&#xff1a;数组是一种 线性表 数据结构&#xff0c;它用一组 连续的内存空间 存储一组具有 相同类型 的数据。 Java中 基本数据类型数组 的存储格式&#xff1a; int arr[] new int[3]; arr[0] 0; arr[1] 1; arr[2] 2;Java中…

拿去吧你,华为出品《看漫画学Python》零基础自学首选~

目前Python在人工智能、机器学习、大数据、数据分析、网络爬虫等领域广泛应用&#xff0c;是非常适合初学者入门和培养编程兴趣的一门语言。相比较其他主流编程语言而言&#xff0c;有更好的可读性&#xff0c;和满足感&#xff0c;上手相对容易。 但是很多零基础的同学不知道…

【C语言】 函数

函数 在计算机科学中&#xff0c;子程序 &#xff0c;一个大型程序中的某部分代码&#xff0c; 由一个或多个语句块组 成。它负责完成某项特定任务&#xff0c;而且相较于其他代 码&#xff0c;具备相对的独立性。 一般会有输入参数并有返回值&#xff0c;提供对过程的封装和细…

元组啊,不就是不可变的列表吗?

B站|公众号&#xff1a;啥都会一点的研究生 相关阅读 整理了几个100%会踩的Python细节坑&#xff0c;提前防止脑血栓 整理了十个100%提高效率的Python编程技巧&#xff0c;更上一层楼 Python-列表&#xff0c;从基础到进阶用法大总结&#xff0c;进来查漏补缺 Python-元组&…

【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理

【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理 不久前看到SAP Community里面有这样一个问题&#xff0c;可能比较老了&#xff0c;但个人觉得比较新奇&#xff0c;就去做了下面一个测试。 首先通过事务代码“CMOD”对增强“MB_CF001”&#xff08;更新物料凭证时的客户功能出…

《从零开始:机器学习的数学原理和算法实践》chap6

《从零开始&#xff1a;机器学习的数学原理和算法实践》chap6 学习笔记 文章目录6.1 凸函数6.2 梯度下降引入梯度是什么为啥梯度是上升最快的方向捏梯度下降与参数求解梯度下降过程演示6.3 代码实践 梯度下降一元函数的梯度下降多元函数的梯度下降6.1 凸函数 凸集 何为凸集 凸集…

c# 多线程

案例1 单线程与多线程对比 单线程会卡主线程,此时会将ui界面给卡住。而多线程开启以后就好了 不会卡住主线程,且运行速度快,相当于多个同时运动。 单线程按钮 private void singlethread_Click(object sender, EventArgs e){for

Kafka多生产者消费者自动配置

背景 项目中不同的业务可能会使用多个kafka&#xff0c;按默认的Kafka配置&#xff0c;最多是支持消费者和生产者使用不同的Kafka&#xff0c;如果两个生产者使用不同的Kafka则需要自定义配置&#xff0c;生成对应的bean。 解决方案 多生产者&#xff0c;多消费者&#xff0…

PowerDesigner 设置

PowerDesigner 设置前言推荐PowerDesigner 设置简单设置sql反向生成物理模型物理模型创建索引最后前言 以下内容源自自己 仅供学习交流使用 推荐 第11章 数据库的设计规范【2.索引及调优篇】【MySQL高级】 powerdesign 通过sql反向生成ER模型 PowerDesiner 15 在物理模型中…

Python测试框架之unittest和pytest 的区别

一、Unittest Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试&#xff0c;测试用例的初始化、…

FFN -> GLU -> GAU

1 GLU GLU的起源是2016年由Yann N. Dauphin在 论文:Language Modeling with Gated Convolutional Networks 在语言模型的建模方法上相比于循环神经网络更具有竞争力&#xff0c;提出了一种简单的线性门控单元来堆叠卷积层从而使得文本中的token可以并行化处理来获得上下文的语义…

HTTP响应详解

目录 一.状态码 小结&#xff08;记住&#xff09; 二.认识响应正文&#xff08;body&#xff09; 三.如何构造http请求 一.状态码 是一个数字&#xff0c;这个数字描述了当前这次请求的状态&#xff08;成功&#xff0c;失败&#xff0c;失败的原因&#xff09; http的状态…

Typora基础篇

Markdown基础 标题 #标题名字&#xff08;#号的个数代表标题的级数&#xff09; 文件-偏好设置-Markdown里面如果勾选了严格模式&#xff0c;那#与标题名称之间就需要加上一个空格一级标题用1个# 二级标题用2个# 三级标题用3个# 四级标题用4个# 五级标题用5个# ####### …

262-视口,布局视口,视觉视口,移动端适配,less语法,比哪里,DPR,RRI,less的弊端,运算,嵌套,混合,继承,混入,运算,

262-CSS中的单位 ◼ 前面编写的CSS中,我们经常会使用px来表示一个长度(大小),比如font-size设置为18px,width设置为100px。 ◼ px是一个长度(length)单位,事实上CSS中还有非常多的长度单位。 ◼ 整体可以分成两类:  绝对长度单位(Absolute length units);  相…

【uniapp】安装与使用uView组件库:

文章目录一、官网文档二、安装【1】进入控制台【2】初始化package.json【3】安装uView-ui【4】配置main.js【5】配置uni.scss【6】配置easycom组件模式【7】app.vue引入基础样式三、效果一、官网文档 https://www.uviewui.com/ 二、安装 【1】进入控制台 【2】初始化package…

基于sklearn的集成学习实战

集成学习投票法与bagging 投票法 sklearn提供了VotingRegressor和VotingClassifier两个投票方法。使用模型需要提供一个模型的列表&#xff0c;列表中每个模型采用tuple的结构表示&#xff0c;第一个元素代表名称&#xff0c;第二个元素代表模型&#xff0c;需要保证每个模型…

《计算机体系结构量化研究方法第六版》1.3 计算机体系结构的定义

1.3.1 指令集体系结构&#xff1a;计算机体系结构的近距离审视 1、这里通过指令集体系结构 ISA来指代程序员可以看到的实际指令集。ISA相当于软件和硬件之间的界限。 &#xff08;1&#xff09;ISA分类 几乎所有的ISA都被划分到了通用寄存器体系结构中&#xff0c;在这种体系…

能源消耗监测管理系统:实现企业用能定额、降低成本节能管理

现如今&#xff0c;很多企业还停留在安装各种节能产品或者是传统节能技术来达到节能目的&#xff0c;但是这些方法不能从根本上实现节能目标&#xff0c;从而导致企业效益。 在国家推动下&#xff0c;能源管理系统加入了互联网的技术以及数字化技术来协同管理&#xff0c;软硬…