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

news2024/11/15 12:22:12

普通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);

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

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

相关文章

根据QQ号获取暗恋的人的全部歌单

文章目录 前言一、成果展示二、后端开发流程三、前后端障碍与难点解决四、待扩展内容五、总结 前言 本人喜欢使用QQ音乐听歌&#xff0c;并且喜欢点击好友栏目观看最近在听&#xff0c;了解暗恋的人最近在听什么歌曲&#xff0c;知己知彼&#xff0c;百战不殆。但是每次都需要…

Python数据分析实验一:Python数据采集与存储

目录 一、实验目的与要求二、实验过程三、主要程序清单和运行结果1、爬取 “中国南海网” 站点上的相关信息2、爬取天气网站上的北京的历史天气信息 四、程序运行结果五、实验体会 一、实验目的与要求 1、目的&#xff1a; 理解抓取网页数据的一般处理过程&#xff1b;熟悉应用…

JAVA实战开源项目:智能停车场管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

【python】异常处理

前言 省略各种废话&#xff0c;直接快速整理知识点 try-except 基础 作用 程序不可能永远都是对的&#xff0c;当7除a&#xff0c;a由用户输入时&#xff0c;用户输入0就会报错。try-except就是解决这些问题。 结构 多分支自定义错误类型 上方的exception是一个错误类型…

Unity性能优化篇(七) UI优化注意事项以及使用Sprite Atlas打包精灵图集

UI优化注意事项 1.尽量避免使用IMGUI(OnGUI)来做游戏时的UI&#xff0c;因为IMGUI的开销比较大。 2.如果一个UGUI的控件不需要进行射线检测&#xff0c;则可以取消勾选Raycast Target 3.尽量避免使用完全透明的图片和UI控件。因为即使完全透明&#xff0c;我们看不见它&#xf…

【牛客】HJ87 密码强度等级 CM62 井字棋

题目一:密码强度等级 题目链接&#xff1a;密码强度等级_牛客题霸_牛客网 (nowcoder.com) 本题主要考察C语言中逻辑分支语句&#xff0c;基本语句以及对各种特殊字符 &#xff0c;ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解&#xff0c;以及基本使用&#x…

【linuxC语言】dup、dup2函数

文章目录 前言一、dup函数二、dup2函数三、将标准输出重定向到文件总结 前言 在Linux环境下&#xff0c;dup、dup2以及原子操作都是用于文件描述符管理和处理的重要工具。这些功能提供了对文件描述符进行复制和原子操作的能力&#xff0c;使得在多线程或多进程环境中更加安全和…

qt一个项目有且只有有一个maindow,其他小窗口用QWidget,QDialog是带有yes和no的QWidget

QMaindow QWidget QDialog区别很大 我想要在生成一个小窗口&#xff0c;结果选择基类为maindow&#xff0c;应该是QWidget 然后就出现奇奇怪怪的问题 QMaindow和QWidget不能乱选择&#xff0c;而且各自QPaintEvent也有很多区别 以下就是错误&#xff1a; 我继承maindow的基类…

C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码

1 排列组合的堆生成法 堆生成算法用于生成n个对象的所有组合。其思想是通过选择一对要交换的元素&#xff0c;在不干扰其他n-2元素的情况下&#xff0c;从先前的组合生成每个组合。 下面是生成n个给定数的所有组合的示例。 示例&#xff1a; 输入&#xff1a;1 2 3 输出&a…

【Qt】四种绘图设备详细使用

绘图设备有4个: **绘图设备是指继承QPainterDevice的子类————**QPixmap QImage QPicture QBitmap(黑白图片) QBitmap——父类QPixmapQPixmap图片类&#xff0c;主要用来显示&#xff0c;它针对于显示器显示做了特殊优化&#xff0c;依赖于平台的&#xff0c;只能在主线程…

python编程从入门到实践

python编程从入门到实践 if语句1.条件测试&#xff1a;2.更多的条件测试&#xff1a;3.外星人颜色#1&#xff1a;4. 外星人颜色#2&#xff1a;5. 外星人颜色#3&#xff1a;6. 人生的不同阶段&#xff1a;7. 喜欢的水果&#xff1a;8. 以特殊方式跟管理员打招呼&#xff1a;9. 处…

程序员失业,被迫开启 PlanB——成为自由职业/独立开发者的第 0 天

程序员失业&#xff0c;被迫开启 PlanB——成为自由职业/独立开发者的第 0 天 今天在逛V2EX的时候看到的一个帖子&#xff0c;程序员中年被裁&#xff0c;被迫开启独立开发这条路。 原贴如下&#xff1a; lastday, 失业啦 公司年前通知我合同到期不续签&#xff0c;今天是我…

React改变数据【案例】

State传统方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>React Demo</title> <!--…

专业的项目管理系统,企智汇!帮助企业提高项目管理效率!

一款专业的项目管理系统&#xff0c;是企智汇项目管理系统&#xff01;企智汇专业做项目管理系统10年&#xff0c;经过10年的打磨&#xff0c;有成熟的项目管理系统功能&#xff0c;它面向各个企业的项目团队&#xff0c;提供数字化、智能化、信息化的项目管理功能&#xff0c;…

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…

工作合同坑

1-不要给证件原件&#xff0c;给复印件&#xff0c;并写明用处 。 2-正式入职才填写详细的个人信息 3-入职的各种相关费用需要谨慎&#xff0c;注意是否合法正规 4-招转培是个坑 5-无薪试岗&#xff0c;滚 6-试用期工资不能低于转正之后的80%&#xff0c;一定要有纸质的正式工资…

LayerNorm的图是不是画错了

这是网上一张很流行的说明几个 Normalization 区别的图 这图出自Kaiming的文章 Group Norm 但是他这个 Layer Norm 的图是不是画错了? 我大四写毕设的时候就想问&#x1f923;&#x1f923;&#x1f923; 这都几年过去了 我觉得图应该是这样画的&#xff0c;相同颜色的区域…

使用docker-compose编排ruoyi项目

目录 一、开始部署 1.拉取ruoyi代码 2.拉取node镜像 3.拉取maven镜像 4.在/root/ruoyi/java下写一个Dockerfile用于后端Java环境 5.拉取MySQL&#xff0c;Redis&#xff0c;Nginx镜像 6.在/root/java目录下写一个nginx.conf 7.在/root/ruoyi目录下写docker-compose.yml文…

计算机网络——计算机网络的性能

计算机网络——计算机网络的性能 速率带宽吞吐量时延时延宽带积往返时间RTT利用率信道利用率网络利用率 我们今天来看看计算机网络的性能。 速率 速率这个很简单&#xff0c;就是数据的传送速率&#xff0c;也称为数据率&#xff0c;或者比特率&#xff0c;单位为bit/s&#…

Spring boot 请求参数包含[]等特殊字符,导致无法接收问题

前言对字符进行转义修改tomcat 配置 前言 Spring boot 请求参数包含[]等特殊字符&#xff0c;导致无法接收问题 对字符进行转义 中括号[] 必须用%5B%5D转义&#xff0c;否则tomcat无法解析&#xff0c;回抛出不合法字符异常&#xff0c;不会进入控制器 修改tomcat 配置 p…