MyBatis访问Db2和MySQL(Maven)

news2024/12/27 2:18:47

注:虽然前面写过一些文档,包含MyBatis连接Db2和MySQL的内容,但是貌似没有单独记录用Maven方式连接DB的文档,所以单写了这一篇文档,方便以后需要快速搭建MyBatis环境时参考。

注:有一篇文档“MyBatis访问Db2小例子”,但是是用手工方式处理的各种包,比较麻烦,不像Maven,直接配置一下就搞定。

环境

  • Ubuntu 22.04
  • IntelliJ IDEA 2022.1.3
  • JDK 17
  • MyBatis 3.5.11
  • Db2 11.5.0
  • MySQL 8.0.30

代码

新建Maven项目 test1213

打开 pom.xml 文件,添加如下内容:

    <dependencies>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc -->
        <dependency>
            <groupId>com.ibm.db2.jcc</groupId>
            <artifactId>db2jcc</artifactId>
            <version>db2jcc4</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

这样,就通过POM文件,直接配置了所需的包,不需要再手工处理了。

注:可以到 https://mvnrepository.com 看一下,各个包是否是最新版本。

<build></build> 是设置资源目录。所谓资源文件,会复制到 target 的相应目录下。资源目录的默认值是 src/main/resources ,所以 pom.xml 文件会自动复制到 target 的相应目录下。本例中因为在 src/main/java 中也有XML文件,所以需要显式设置资源目录。注意:设置 src/main/java 为资源目录,覆盖了默认设置,所以也需显式设置 src/main/resources 为资源目录。

创建POJO MyObject 如下:

package com.example.demo.pojo;

public class MyObject {
    private int c1;
    private String c2;

    public int getC1() {
        return c1;
    }

    public void setC1(int c1) {
        this.c1 = c1;
    }

    public String getC2() {
        return c2;
    }

    public void setC2(String c2) {
        this.c2 = c2;
    }

    @Override
    public String toString() {
        return "MyObject{" +
                "c1=" + c1 +
                ", c2='" + c2 + '\'' +
                '}';
    }
}

创建 MyMapper.java 文件如下:

package com.example.demo.dao;

import com.example.demo.pojo.MyObject;
import java.util.List;

public interface MyMapper {
    List<MyObject> read();
}

在相同目录下创建 MyMapper.xml 文件如下:

<?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="com.example.demo.dao.MyMapper">
    <select id = "read" resultType="com.example.demo.pojo.MyObject">
        select c1, c2 from t1
    </select>
</mapper>

src/main/resources 目录下创建 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>
<!--    <environments default="db2">-->
<!--        <environment id="db2">-->
<!--            <transactionManager type="JDBC"/>-->
<!--            <dataSource type="POOLED">-->
<!--                <property name="driver" value="com.ibm.db2.jcc.DB2Driver"/>-->
<!--                <property name="url" value="jdbc:db2://localhost:50000/sample"/>-->
<!--                <property name="username" value="db2inst1"/>-->
<!--                <property name="password" value="passw0rd"/>-->
<!--            </dataSource>-->
<!--        </environment>-->
<!--    </environments>-->

    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/repo"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper class="com.example.demo.dao.MyMapper"/>
    </mappers>

</configuration>

注意对比Db2和MySQL的设置。

src/test/java 目录下,创建测试 TestMybatis.java 文件如下:

package com.example.demo.test;

import com.example.demo.dao.MyMapper;
import com.example.demo.pojo.MyObject;
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.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class TestMybatis {
    @Test
    public void Test1() throws IOException {
        String resource = "mybatis-config.xml";

        InputStream inputStream = Resources.getResourceAsStream(resource);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession(true);

        try {
            MyMapper mapper = sqlSession.getMapper(MyMapper.class);

            List<MyObject> list = mapper.read();
            list.forEach(System.out::println);
        } finally {
            sqlSession.close();
        }
    }
}

运行测试,结果如下:

MyObject{c1=1, c2='9800'}
MyObject{c1=2, c2='10200'}

mybatis-config.xml 里,切换到Db2,则测试结果如下:

MyObject{c1=1, c2='444'}
MyObject{c1=2, c2='222'}
MyObject{c1=3, c2='333'}

可见,MyBatis对底层DB做了抽象,切换Db2和MySQL时,业务代码无需更改。

代码结构如下:

在这里插入图片描述

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

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

相关文章

基于java+springboot+mybatis+vue+mysql的摄影跟拍预定管理系统

项目介绍 摄影跟拍预定管理方面的任务繁琐,以至于每年都在摄影跟拍预定管理这方面投入较多的精力却效果甚微,摄影跟拍预定管理系统的目标就是为了能够缓解摄影跟拍预定管理工作方面面临的压力,让摄影跟拍预定管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到…

MyBaits入门完结篇

不仅可以判断参数&#xff0c;还可以判断_parameter和_databasedId bind标签 sql标签配合include标签完成对重复sql语句的抽取 要在带注解的映射器接口类中使用动态 SQL&#xff0c;可以使用 script 元素 缓存 一级缓存 一级缓存失效情况 手动清空缓冲的函数&#xff1a…

【众筹】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!

众筹说明 定金翻倍&#xff0c;即定金19.9元&#xff0c;在付尾款时可抵40元(成品售价不会超过120元)&#xff01;达标当天就开搞&#xff0c;满100人加速搞尽量在年前发货&#xff0c;让大家先玩起来&#xff01;如果不达标则原路退款&#xff0c;项目取消。 众筹时间&#…

ADI Blackfin DSP处理器-BF533的开发详解44:图像处理专题-StenciFilter (图像的平滑处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像的平滑处理&#xff08;高斯模板&#xff09;&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下&qu…

NetCore基于Roslyn的动态编译实现

目录 一. AvalonEdit文本器 1.功能实现 2. 高亮 3. 代码提示 二. 运行效果展示 三. 源码链接 四. 参考资料 一. AvalonEdit文本器 1.功能实现 直接用Github上的源码进行实现&#xff0c;icsharpcode/AvalonEdit&#xff1a;The WPF-based text editor component used i…

在R语言中使用概率分布:dnorm,pnorm,qnorm和rnorm

在这里&#xff0c;我将讨论哪些函数可用于处理正态分布&#xff1a;dnorm&#xff0c;pnorm&#xff0c;qnorm和rnorm。 R中的分布函数 有四个关联的函数&#xff0c; 四个正态分布函数是&#xff1a; d范数&#xff1a;正态分布的密度函数p范数&#xff1a;正态分布的累积密…

【Spring】SpringBoot 配置 log4j2 日志

1. 概述 Apache Log4j2 是对原先的 Log4j 项目的升级版本&#xff0c;参考了 logback 的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带来了一些重大的提升。 2. 案例与解析 2.1 引入依赖 SpringBoot 的 starter 自带的是 logback 日志&#xff0c;若要使…

数据结构Data Structure和算法Algorithm导航目录(持续更新)

文章目录1. 大纲2. 算法基础3. 数据结构3.1 线性结构3.1.1 字符串3.1.2 线性表3.1.3 Hash表3.1.4 栈3.1.5 队列3.1.6 位图3.2 逻辑结构3.2.1 树3.2.1.1 二叉树3.2.1.2 动态查找树3.2.1.3 多路查找树3.2.2 图3.2.4 堆4. 算法4.1 排序4.2 查找5. 领域算法6. 优秀算法赏析1. 大纲 …

STM32F4 | 按键输入实验

文章目录一、STM32F4 IO 口简介二、硬件设计三、软件设计四、实验现象五、STM32CubeMX 配置 IO 口输出这一章&#xff0c;我们将通过 ALIENTEK阿波罗 STM32 开发板上载有的 4 个按钮&#xff08; KEY_UP、 KEY0、 KEY1 和 KEY2&#xff09;&#xff0c;来控制板上的 2 个 L…

成功的项目管理需要做好哪些方面?

每一个项目都代表了为公司建立同行竞争优势和提高利润的方式&#xff0c;成功交付的项目会将公司与那些竞争激烈的公司区分开来。而项目的成功取决于不同的因素。这也是项目经理所需要关注的问题&#xff0c;在每一个项目成功标准方面保持一致可以消除项目失败的风险&#xff0…

【数据库课程设计】SQLServer数据库课程设计(学生宿舍管理),课设报告+源码+数据库关系图

数据库课程设计——学生宿舍管理&#xff0c;需要全部源码可以关注私信我&#xff0c;把邮箱发在评论区前言一、课题背景和开发环境1、课题背景2、开发环境二、系统功能及示意图1、系统实现功能2、功能示意图2.1学生模块2.2管理人员模块三、概念结构设计1、管理员分配宿舍E_R图…

传染病模型3

一、研究方向 建立传染病的数学模型描述传染病的传播过程 分析感染人数的变化规律&#xff0c;预测传染病高峰的到来 探索控制、根除、预防传染病传播蔓延的手段 二、舱室 流行病学中的一大类模型&#xff0c;称为“舱室”模型&#xff0c;它是将人群分成若干个“舱室…

为什么机器码、汇编不可移植,而C语言可以移植?

1、机器码不可移植的原因 机器码&#xff08;二进制&#xff09;是处理器能直接识别的语言&#xff0c;不同的机器码代表不同的运算指令&#xff0c;处理器可以识别哪些机器码是由处理器的硬件设备决定的&#xff0c;不同的处理器机器码可能不同。 比如在ARM处理器上加法可能…

Linux 线程池

文章目录线程池的定义使用线程池的原因基于POSIX实现的线程池基于block队列的线程池实现基于ring队列的线程池实现设计单例模式线程池线程池的定义 线程池就一堆已经创建好的任务线程&#xff0c;初始它们都处于空闲等待状态&#xff0c;当有新的任务需要处理的时候&#xff0…

大话设计模型 Task01:设计原则

目录1. 单一职责原则&#xff08;SRP&#xff09;使用动机如何使用2. 开闭原则&#xff08;OCP&#xff09;使用动机如何使用使用原则3. 依赖倒置原则&#xff08;DIP&#xff09;使用动机使用原则4. 里氏替换原则&#xff08;LSP&#xff09;使用动机5. 迪米特法则&#xff08…

12、MInio文件系统的使用小记一

前言&#xff1a;文档存储从最初的文本文档发展到现在的图片视频存储&#xff0c;存储容器也从数据库演变成了文件系统&#xff0c;目前市面上提供云存储的公司很多&#xff0c;百度腾讯阿里华为等&#xff0c;这些公司都有成熟的文件存储方案及restapi接口&#xff0c;很方便&…

Docker-网络配置

目录 一&#xff0c;网络模式 1.bridge模式&#xff08;默认模式&#xff09; 2.host模式 二&#xff0c;bridge模式 三&#xff0c;host模式 网络模式与数据卷容器挂载的操作 三&#xff0c;如何创建自定义网络 一&#xff0c;网络模式 Docker在创建容器时有四种网络模式…

Sulfo CY5-马来酰亚胺|Cyanine5 MAL菁染料CY5标记

Sulfo CY5-马来酰亚胺|Cyanine5 MAL菁染料CY5标记 Cyanine5 maleimide是单一活性染料&#xff0c;有选择性的与硫醇基团&#xff08;比如蛋白和多肽的半胱氨酸&#xff09;结合以进行标记。我们使用水溶的Sulfo-Cyanine5 maleimide标记抗体和其他敏感蛋白。Cyanine5是Cy5的类似…

web前端设计与开发期末作品_期末大作业【使用HTML制作汽车首页】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

校园二手商品交易平台的设计与实现(J2EE)

目 录 摘要 I Abstract II 目录 III 1 绪论 1 1.1 课题研究背景及意义 1 1.2 本课题主要工作 1 2 系统相关技术 3 2.1 J2EE技术 3 2.2 MVC模式 4 2.3 B/S结构 4 2.4 数据库技术 4 3 系统需求分析 6 3.1 用户功能需求 6 3.2 系统可行性分析 6 3.2.1 技术可行性 6 3.2.2 经济可行…