【Java - 框架 - Mybatis】(01) 普通Java项目使用Mybatis操作Mysql - 快速上手

普通Java项目使用Mybatis操作Mysql - 快速上手

说明

  • 通过软件"IntelliJ IDEA"创建"Maven"项目完成;
  • 通过"Mybatis"框架操纵"MySQL"数据库完成操作;

环境

  • Java版本"1.8.0_202"
  • Windows 11 专业版_22621.2428
  • IntelliJ IDEA 2021.1.3(Ultimate Edition)

依赖

  • "junit"版本"4.13.2"
  • "mybatis"版本"3.5.6"
  • "mysql-connector-java"版本"8.0.28"

步骤

步骤A

说明

  • 创建一个"Maven"项目;

图片

(1)

(2)

步骤B

说明

  • 添加相关依赖;

代码

(1)

【说明】

  • 所有依赖项;
  • 直接CV即可;
  • 文件pom.xml
<dependencies>

    <!-- "JUnit"依赖项 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>

    <!-- "Mybatis"依赖项 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <!-- "Mysql"依赖项 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>

</dependencies>

(2)

【说明】

  • "JUnit"依赖项;
<!-- "JUnit"依赖项 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

(3)

【说明】

  • "Mybatis"依赖项;
<!-- "Mybatis"依赖项 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

(4)

【说明】

  • "MySQL"依赖项;
<!-- "Mysql"依赖项 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>

图片

步骤C

说明

  • 创建演示数据库;

图片

代码

【说明】

  • 演示数据库的建库语句;
-- --------------------------------------------------------
-- 主机:                           127.0.0.1
-- 服务器版本:                        10.11.2-MariaDB - mariadb.org binary distribution
-- 服务器操作系统:                      Win64
-- HeidiSQL 版本:                  11.3.0.6295
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


-- 导出 mybatis_demo 的数据库结构
DROP DATABASE IF EXISTS `mybatis_demo`;
CREATE DATABASE IF NOT EXISTS `mybatis_demo` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */;
USE `mybatis_demo`;

-- 导出  表 mybatis_demo.a 结构
DROP TABLE IF EXISTS `a`;
CREATE TABLE IF NOT EXISTS `a` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(50) DEFAULT NULL COMMENT '用户名',
  `password` varchar(50) DEFAULT NULL COMMENT '密码',
  `nick` varchar(50) DEFAULT NULL COMMENT '昵称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='"Mybatis"测试表';

-- 正在导出表  mybatis_demo.a 的数据:~0 rows (大约)
DELETE FROM `a`;
/*!40000 ALTER TABLE `a` DISABLE KEYS */;
INSERT INTO `a` (`id`, `username`, `password`, `nick`) VALUES
	(1, 'admin', '1234567890', '管理员');
/*!40000 ALTER TABLE `a` ENABLE KEYS */;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;

步骤D

说明

  • 创建"Mybatis"配置文件;

代码

【说明】

  • "Mybatis"配置文件;
  • 文件mybatis-config.xml
  • 创建文件后直接"CV"即可;
<?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">
                <!-- 设置驱动名称 -->
                <!-- "${driver}":具体的驱动名称(如:com.mysql.cj.jdbc.Driver)-->
                <property name="driver" value="${driver}"/>
                <!-- 设置连接地址 -->
                <!-- "${url}":具体的连接地址(如:jdbc:mysql://localhost:3306/数据库名?useSSL=false)-->
                <property name="url" value="${url}"/>
                <!-- 设置数据库用户 -->
                <!-- "${username}":具体的数据库用户 -->
                <property name="username" value="${username}"/>
                <!-- 设置数据库密码 -->
                <!-- "${password}":具体的数据库密码 -->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 配置用于引入映射文件 -->
    <mappers>
        <!-- Mapper代理-包扫描 -->
        <package name="mapper"/>
    </mappers>
</configuration>

图片

步骤E

说明

  • 创建"Mybatis"映射文件;

代码

【说明】

  • "Mybatis"映射文件;
  • 文件DemoMapper.xml
  • 创建后直接"CV"即可;
<?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":即空间命名名称,一般绑定对应接口的全限定路径 -->
<mapper namespace="xxxx">

</mapper>

图片

(1)

(2)

步骤F

说明

  • 添加基础代码;

代码

【说明】

  • 基础代码;
  • 创建文件后直接"CV"即可;
  • 文件DemoMapperTests.java
import mapper.DemoMapper;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class DemoMapperTests {

    DemoMapper mapper;
    SqlSession sqlSession;

    @Before
    public void start() throws IOException {
        System.out.println("测试类里的某个测试方法开始执行了。。。\n");
        // 定位核心配置文件
        String resource = "mybatis-config.xml";
        // 加载核心配置文件
        InputStream is = Resources.getResourceAsStream(resource);
        // 获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 获取SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        // 获取SqlSession
        sqlSession = sqlSessionFactory.openSession();
        // 获取Mapper接口对象
        mapper = sqlSession.getMapper(DemoMapper.class);
    }

    @After
    public void close() {
        System.out.println("\n测试类里的某个测试方法执行完毕了。。。");
        // 进行事务的提交操作
        sqlSession.commit();
        // 断开程序与数据库的链接,释放资源;
        sqlSession.close();
    }

    /**
     * 测试代码
     */
    @Test
    public void test() {
        System.out.println("测试方法开始执行!");
    }

}

图片

步骤G

说明

  • 进行操作演示;

代码

(1)

【说明】

  • 文件DemoMapper.java
/**
 * 统计表中的记录总数
 */
int count();

(2)

【说明】

  • 文件DemoMapper.xml
<!--int count();-->
<select id="count" resultType="java.lang.Integer">
    SELECT
        COUNT(*)
    FROM
        a
</select>

(3)

【说明】

  • 文件DemoMapperTests.java
/**
 * 测试代码
 */
@Test
public void test() {
    System.out.println("测试方法开始执行!");
    System.out.println(mapper.count());
}

图片

(1)

(2)

后记

  • 此文所用项目代码文件,需要的请下载;

  • 具体操作代码见文章 :【Mybatis】(02);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python 的zip函数的用法

目录 简介 示例 例子1 例子2 例子3 简介 zip在英语里的意思是拉链。想象两个列表&#xff08;或任何可迭代的容器&#xff09;&#xff0c;a和b。两者各自有若干元素。zip的输入变量就是两个可迭代的容器&#xff0c;zip的返回值也是一个容器&#xff0c;容器的每个元素都…

《JAVA与模式》之不变模式

系列文章目录 文章目录 系列文章目录前言一、不变模式的结构二、不变模式在JAVA中的应用三、不变模式的优点和缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 …

OpenSearch 与 Elasticsearch:哪个开源搜索引擎适合您?

当谈论到搜索引擎产品时&#xff0c;Elasticsearch 和 OpenSearch 是两个备受关注的选择。它们都以其出色的功能和灵活性而闻名&#xff0c;但在一些方面存在一些差异。在本文中&#xff0c;我们将从功能和延展性、工具与资源、价格和许可这三个角度对这两个产品进行论述。通过…

OSPF直连路由引入实验简述

OSPF直连路由引入 实验拓扑图 实验命令 r2: sys sysname r2 undo info enable int loopb 0 ip add 2.2.2.2 32 quit int e0/0/0 ip add 23.1.1.2 24 quit ospf 1 area 0 network 23.1.1.0 0.0.0.255 network 2.2.2.2 0.0.0.0 ret sys int loopb 200 ip add 200.200.200.200 3…

KH-MCX-KWE-W

KH-MCX-KWE-W品牌: kinghelm(金航标)封装: 插件 描述: 镀金

【数据分享】2013-2022年全国范围逐日SO2栅格数据

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2013-2022年全国范围逐月SO2栅格数据和逐年SO2栅格数据&#xff08;均可查看之前的文章获悉详情&#xff09;。 本次我们给大家带来的是2013-2022年全国范围的逐日的SO2栅格数据&#xff0c;原始…

CSS中元素的层叠顺序

层叠顺序&#xff0c;英文称作 stacking order&#xff0c;表示元素发生层叠时有着特定的垂直显示顺序。下面是盒模型的层叠规则&#xff1a; 对于上图&#xff0c;由上到下分别是&#xff1a; &#xff08;1&#xff09;背景和边框&#xff1a;建立当前层叠上下文元素的背景…

飞驰云联CEO朱旭光荣获“科技领军人才”称号

2024年2月29日&#xff0c;苏州工业园区“优化营商环境暨作风效能建设大会”成功举办&#xff0c;会上公布了2023年度苏州工业园区第十七届第一批金鸡湖科技领军人才名单&#xff0c;Ftrans飞驰云联创始人兼CEO朱旭光先生凭借在数据安全以及文件交换领域取得的突出成果&#xf…

容器(0)-DOCKERFILE-安装-常用命令-部署-迁移备份-仓库

1.安装 启动 systemclt start docker //启动 systemctl status docker //状态 docker info systemclt stop docker systemctl status docker systemctl enable docker //开机启动 2.常用命令 镜像查看 docker images 镜像查看 docker status 镜像拉取 docker pull centos:…

红队专题-渗透工具-瑞士军刀Netcat

瑞士军刀Netcat NC: netcatNC反弹shell命令centos 安装反弹shell时如果用Linux的netcat监听可能 会出现中文字符、↑↓←→等特殊按键乱码问题,我们可以尝试使用rlwrap工具来解决这个问题。 NC: netcat 一个简单、可靠的网络工具 nc的作用(1)实现任意TCP/UDP端口的侦听 …

下载一些ROS的包的方式

ROS Index 我们可以去ROS Index网站下载一些我们需要的包。打开浏览器在网址框输入index.ros.org。或者点击此处链接ROS Index 在这个网站中我们可以浏览并找到我们需要的包&#xff0c;也可以下载它的源代码或者仅安装到我们的系统中来使用。&#xff08;安装过程在终端中进行…

【Redis知识点总结】(三)——Redis持久化机制、内存淘汰策略、惰性删除机制

Redis知识点总结&#xff08;三&#xff09;——Redis持久化机制、内存淘汰策略、惰性删除机制 Redis持久化RDBAOFAOF与RDB的对比混合持久化 内存淘汰策略惰性删除机制 Redis持久化 Redis有两种数据持久化的方式&#xff0c;一种是RDB、一种是AOF。 RDB RDB是内存快照&#…

市场情绪主升周期的分歧产生核心节点剖析

昨天下午我在群里分享了核心一些观点&#xff1a; 理解市场&#xff0c;划分情绪周期阶段&#xff0c;本质还是理解&#xff0c;观察驱动市场先手资金的动向。 亏钱可以说是因为我们带有个人偏见导致的&#xff0c;进一步说是因为我们偏离了市场资金共识导致的&#xff0c;可能…

HuggingFace团队亲授:如何使用HuggingFace上的开源模型

Open Source Models with Hugging Face 本文是 https://www.deeplearning.ai/short-courses/open-source-models-hugging-face/ 这门课程的学习笔记。 文章目录 Open Source Models with Hugging FaceWhat you’ll learn in this course Lesson 1: Selecting ModelsLesson 2: …

openJDK17官方镜像报Error loading shared library libfreetype.so

新项目使用openJDK17做的&#xff0c;做完后打包成docker镜像到服务器上运行 docker镜像基础镜像用的是openjdk:17-jdk-alpine 运行后加载验证码的时候报&#xff1a;Error loading shared library libfreetype.so 搜了一圈没找到哪里有共用的带字体库的jdk17镜像&#xff0…

【uniapp】uniapp小程序中实现拍照同时打开闪光灯的功能,拍照闪光灯实现

一、需求前提 特殊场景中&#xff0c;需要拍照的同时打开闪光灯&#xff0c;&#xff08;例如黑暗场景下的设备维护巡检功能&#xff09;。 起初我是用的uviewui中的u-upload组件自带的拍照功能&#xff0c;但是这个不支持拍照时打开闪光灯&#xff0c;也不支持从通知栏中打开…

JAVA实战开源项目:大学兼职教师管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0c;旨…

JAVA中YML:几个用法

项目有一些配置文件&#xff0c;ini、prop类型的配置文件都考虑过后&#xff0c;还是选择yml文件&#xff0c;如上图&#xff1a;xxconfig.yml。 要求&#xff1a; 1、允许实施人员手动配置 2、配置文件要能轻便的转化为一个JAVA对象 3、程序启动后&#xff0c;打印这些配置项&…

qt带后缀单位的QLineEdit

QLineEditUnit.h #pragma once #include <QLineEdit> #include <QPushButton>class QLineEditUnit : public QLineEdit {Q_OBJECT public:QLineEditUnit(QWidget* parent Q_NULLPTR);~QLineEditUnit();//获取编辑框单位QString UnitText()const;//设置编辑框单位…

Java开发与配置用到的各类中间件官网

开发配置时用到了一些官网地址&#xff0c;记录一下。 activemq 官网&#xff1a;ActiveMQ elk 官网&#xff1a;Elasticsearch 平台 — 大规模查找实时答案 | Elastic nginx 官网&#xff1a;nginx maven 官网&#xff1a;Maven – Welcome to Apache Maven nexus 官网&a…