【Mybatis】使用mybatis框架连接mysql数据库详细步骤

news2024/11/24 22:49:55

    和我之前写的通过导入jdbc驱动jar包来连接mysql数据库而言,用mybatis来说可以有很多好处呀,首先mybatis,就是对jdbc的优化方案对吧,,jdbc的硬编码和一些繁琐的操作在使用mybatis的时候我就彻底抛掷脑后了哈哈哈。

   同时,mybatis在国内使用的持久层框架中占比也很高啊

所以对mybatis的学习,对我们也很有用处嘞。

接下来我就把我在学习过程中的一些心得啥的下来,方便大家,同时也是巩固自己,我创建的是maven项目加上mybatis来实现对mysql数据库的连接,这个过程并不复杂,但也正是第一步,我们也要格外仔细。

mybatis的一些xml文件配置我参考了:mybatis – MyBatis 3 | 入门

maven项目中导入的jdbc驱动jar包和mybatis的jar包的依赖我从这里找的:https://mvnrepository.com/artifact/mysql/mysql-connector-java

https://mvnrepository.com/artifact/org.mybatis/mybatis

大家如果在maven项目中不知道怎么写依赖坐标,可以从这里直接拿来用。ok,下来开始了。

详细步骤视频:

【Mybatis】mybatis框架下连接mysql数据库详细配置过程

第一步 在pom.xml中写好依赖坐标

这是我导的jdbc驱动

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

这是我导的mybatis

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

pom.xml的整体为:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>demo2</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
    </dependencies>
</project>

第二步  mybatis的核心配置文件

我们需要在resources目录下编写好mybatis的核心配置文件Mybatis-config.xml,这个配置文件的模板在上面发的mybatis入门的网站里有,大家可以去直接copy过来,好好研究一下。

Mybatis-config.xml的整体代码为:

<?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"/>
<!--            这里要写入我们连接mysql数据库的信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
<!--    这里要写sql映射-->
    <mappers>
        <mapper resource="com/kinroy/Mapper/userMapper.xml"/>
    </mappers>
</configuration>

在<datasource>标签下便要求写入我们的mysql数据库的连接信息,包括url、name、password老三样,而在<mappers>标签下待会要写下我们接下要写的userMapper.xml,待会通过它来实现mapper代理。

第三步 写好实体类

我们需要把用来演示的user表中存的数据把它们封装成一个对象,这个时候就要写一个User的实体类啦,user表中存的数据有id、name、age这些简单数据。

User类的整体代码如下:

package com.kinroy.pojo;

public class User {
    private int id;
    private String name;
    private int age;

    public User() {
    }

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "User{id = " + id + ", name = " + name + ", age = " + age + "}";
    }
}

第四步 XXXMapper.xml

这次我在mysql里建立一个test数据库,在test数据库里有一个user表,我们演示的时候是对user表进行操作的,所以在Mapper.xml文件这命名时,就用userMapper.xml

因为要实现Mapper代理,所以在后面我们会建一个和userMapper.xml同名的接口,在接口中便会存放与userMapper.xml中sql语言一样的抽象方法,来实现mapper代理,我不知道我说得是否清楚,而这就得要这个接口和userMapper.xml所在的目录要相同,如下图:

这是userMapper.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.kinroy.Mapper.userMapper">

    <select id="selectall" resultType="com.kinroy.pojo.User">
        select * from user;
    </select>
    <select id="selectzhangsan" resultType="com.kinroy.pojo.User">
       select * from user where name='张三';

    </select>

</mapper>

这是与其同名接口的整体代码:

package com.kinroy.Mapper;

import com.kinroy.pojo.User;

import java.util.List;

public interface userMapper {
    List<User> selectall();
    User selectzhangsan();
}

这里推荐大家去下一个插件啊,就是mybatisX,在写mapper代理时,别提有多方便了

第五步 连接mysql数据库

如何大家在写Mapper.xml的时候会发现有爆红的,比如没有识别表名啊之类的,这是因为我们还没有和数据库建立连接,连接成功后就不会报错了

这这里也写好url、name、password还有要连接的数据库就好了。

第六步  开始test!

我写了一个测试案例:

import com.kinroy.Mapper.userMapper;
import com.kinroy.pojo.User;
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 test {
    public static void main(String[] args) throws IOException {
        String resource = "Mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        userMapper users = sqlSession.getMapper(userMapper.class);
        /*List<User> selectall = users.selectall();
        System.out.println(selectall);*/
        User zhangsan = users.selectzhangsan();
        String s = zhangsan.toString();
        System.out.println(s);

    }
}

 测试了一下,看成功没有,果然没啥问题,这样我们就完成整个mybatis的连接mysql,并执行一下简单sql语言的过程啦。

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

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

相关文章

MySQL数据库下载及安装教程(最最新版)

MySQL数据库下载及安装教程&#xff08;最最新版&#xff09; 一、下载mysql数据库二、安装Mysql三、验证是否安装成功&#xff08;一&#xff09;、命令提示符cmd窗口验证&#xff08;二&#xff09;、MySQL控制台验证 一、下载mysql数据库 进入MySQL官方网站&#xff08;htt…

SVG实现中国地图

1.SVG是什么&#xff1f; svg 是Scalable Vector Graphics的缩写&#xff0c;指可伸缩矢量图形&#xff0c;可以用于绘制复杂不规则的控件。 svg绘制原理&#xff0c;就是利用了Path绘制图形。 1&#xff09;svg利用xml定义图形。在xml中就包晗了绘制Path所需的数据。 2&…

创建数据库中,超详细常用的MySQL命令(含解析、图解与全部代码)

目录 系统命令行 MySQL命令行 数据库命令 数据表命令 建表并导入数据 表的其他操作 系统命令行 以下是在系统命令行&#xff0c;已管理员身份运行的情况下&#xff0c;MySQL的一些命令 1.这两条是关闭MySQL服务与开启MySQL服务的命令 net stop MySQL net start MySQL80…

Mysql启动不了怎么回事

mysql 服务无法启动是什么原因&#xff1f; mysql服务无法启动的原因有很多&#xff1a;可能端口被占用&#xff1b;可能my.cnf配置了错误的参数&#xff1b;也有可能没有初始数据库&#xff0c;还有可能是其他原因。大多数原因都可以通过先注销掉原有的服务、重新装载服务、之…

ASIC-WORLD Verilog(5)基础语法下篇

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加了自己的理解&#xff09;分享给大家。 这是网站原文&…

k8s中pod使用详解

一、前言 在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。 二、再看k8s架构图 为了加深对k8s中pod的理解,再来回顾下k8s的完整架构 三、pod特点 结合上面这…

YOLOv5算法原理与网络结构

YOLOv5算法原理与网络结构 1.1 YOLOv5算法 YOLOv5算法共有4种网络结构&#xff0c;分别是YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x&#xff0c;这四种网络结构在宽度和深度上不同&#xff0c;原理上基本一样&#xff0c;接下来以 YOLOv5s 为例介绍 YOLOv5网络结构。 图1 YOLOv5网…

基于Java+SpringBoot+Vue前后端分离手机销售商城系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

软件AutoID Network Navigator设置基恩士扫码枪的使用教程

AutoID Network Navigator可以用来对扫码枪的ip和各参数进行调整 1.设置前的准备 扫码枪的默认ip是192.168.100.1&#xff0c;所以需要先把电脑IP更改为192.168.100.xxx 2.搜索扫码枪 更改电脑IP后打开软件点击绿色的号 选择以太网 出现局域网设置弹窗&#xff0c;若为你设…

为什么说网络安全行业是 IT 行业最后的红利?

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护 2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来 3-5 年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏…

《汇编语言》- 读书笔记 - 第1章-基础知识

《汇编语言》- 读书笔记 - 第1章-基础知识 1.1 机器语言1.2 汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线主流CPU的寻址能力 1.9 数据总线1.10 控制总线检测点 1.11.11 内存地址空间(概述)1.12 主板1.13 接口卡1.1…

【python基础教程】csv文件的写入与读取

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;python基础教程 &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点击跳转进入网站 csv文件读写 csv的简单介绍…

MAC怎么获取文件路径 MAC获取文件路径的四种方法

MAC怎么获取文件路径介绍 方法一&#xff1a;最简单的方法 右键文件或者文件夹&#xff0c;选择显示简介 2在弹出来的窗口中找到位置&#xff0c;即为路径&#xff0c;在mac 10.10之前的系统是正常的路径&#xff0c;10.10开始是小箭头代替/显示&#xff0c;注意&#xff0c…

Git操作不规范,战友提刀来相见。

年终奖都没了&#xff0c;还要扣我绩效&#xff0c;门都没有&#xff0c;哈哈。 这波骚Git操作我也是第一次用&#xff0c;担心闪了腰&#xff0c;所以不仅做了备份&#xff0c;也做了笔记&#xff0c;分享给大家。 文末留言抽奖&#xff0c;聊聊你的年终奖。 问题描述 小A和…

2023年最新Python安装详细教程

目录 一、python官网 二、在官网的Downloads栏目&#xff0c;选择对应的操作系统 三、进入windows对应的页面&#xff0c;选择python版本 (1)选择python的稳定发布版本Stable Releases (2)下载python的安装程序Windows Installer 四、运行安装python的安装程序Windows Install…

【郭东白架构课 模块二:创造价值】25|节点四:架构规划之需求确认

你好&#xff0c;我是郭东白。 上节课我们讲了架构规划这个环节的第一个部分&#xff0c;也就是统一语义。那么这节课我们就来讲第二个部分——需求确认。 需求确认与统一语义的过程是密不可分的。需求确认是在统一语义赋能之下进行的&#xff0c;所以两者并不是先后顺序的关系…

【模拟IC】MOM 电容 和 MIM 电容的简介与比较

文章目录 一、MIM和MOM电容简介1、MIM (Metal-Insulator-Metal)电容2、MOM(Metal-Oxide-Metal)电容 二、 先进工艺下&#xff0c;MIM 和 MOM 电容的比较1、单位面积容值2、工艺实现和电压系数3、电容密度受频率的影响(稳定性&#xff09;4、自谐振频率随面积的变化5、品质因数6…

ChatGPT火爆科研圈,登上《Nature》《Science》正刊

ChatGPT火出圈了&#xff0c;几乎涉及到各行各业的每个领域&#xff0c;科研圈更甚。 《Science》期刊主编H. HOLDEN THORP发表关于ChatGPT的社论&#xff1a; “ChatGPT is fun, but not an author”。 “ChatGPT 很好玩&#xff0c;但不是作者” 文章指出&#xff0c;许多担忧…

JavaWeb-CSS的盒模型与弹性布局

目录 CSS的盒模型边框内边距外边距块级元素水平居中 弹性布局常用的一些属性justify-contentalign-items CSS的盒模型 每一个HTML就相当于一个矩形的"盒子". 这个盒子由以下几个部分组成 边框 border内容 content(下图中间蓝色部分)内边距 padding外边距 margin 边…

【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

“未来的软件长什么样&#xff1f;” 一位妹子产品经理问我&#xff1a;“你说说未来的软件ui是什么样的&#xff1f;听到这个问题我先是诧异了一下&#xff0c;随即陷入了沉思。” 我看着眼前的产品经理&#xff0c;她是一位比较年轻干练的女强人类型&#xff0c;1.65的身材…