抽象轻松的java——mybaties

news2024/11/15 15:31:50

前置工作icon-default.png?t=N7T8http://t.csdnimg.cn/RVvn4完成了前置工作后的IDEA应该是这样的

正式进入mybaties的入门

第一步,打开mybaties的官网文档icon-default.png?t=N7T8https://mybatis.net.cn/getting-started.html本次入门,将从XML构造SQL工厂

第一步,创建一个XML文件,随意名字

新建→文件→输入名词,后缀为xml

只要后缀是xml就可以了,不要在乎图标

将下面这段代码复制进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"/>
            <dataSource type="POOLED">
                <property name="driver" value="你的数据库驱动"/>
                <property name="url" value="你的数据库连接"/>
                <property name="username" value="你的数据库用户"/>
                <property name="password" value="你的数据库密码"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

​

重点在那几个中文标识,你的数据库驱动

                                        你的数据库连接

                                        你的数据库用户

                                        你的数据库密码

上面四个,在初次使用时,绝大多数问题都是路径问题,代码层面因为有IDEA的补全,很少会出现问题的

所以在入门的时候,请自己观察路径的写法!!!

第一步:你的数据库驱动

先学会找这个驱动

看到这个mysql-connector-java-8.0.25.jar

点击com.mysql

点击cj

点击jdbc

查看到驱动的英文

Driver,右键

有一个复制引用——com.mysql.cj.jdbc.Driver

将这个掩盖掉你的数据库驱动

第二步:你的数据库连接

在前置操作中,会有一个这个

看见URL没,把它复制掩盖掉你的数据库连接

第三部:你的数据库用户,你的数据库密码

就是上面你输入的用户和密码

完成后如图

请保持XMl的设置的整洁性,要不然到时候找错误会非常痛苦

请保证路径的整洁性和完整性,不要少复制,多粘贴

例如:{}!@#这种

进到main文件将这段代码复制进去

public class main {

    public static void main(String[] args) throws FileNotFoundException {
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("你的路径引用"));
        try(SqlSession sqlSession = build.openSession();){
            System.out.println("连接成功");
        }
    }
  }

进行第一次连接,如果连接成功,是不会报错的

问题1:数据库的连接路径出问题!

问题2:数据库的驱动路径出问题!

问题3:XML的文件完整性出问题

解决方法,通过工具直接复制引用

XML的完整,把上面的XML完整的复制下来!

或者进到myBAtis官网文档,复制——与上面我提供的最大区别是中文和英文的区别

建议尝试的在上面三个问题中删除一点东西,再进行连接,可以通过ctrl+z撤回操作

第一个阶段完成,通过MyBatis成功连接数据库,第二个阶段使用数据库

第一步:新建一个包,创建一个类,专门用来获取数据库的内容(你也可以直接创建一个类)

这个类的顺序和名字,要与你的数据库相同

确保你的内容与数据库的列的完全一致,你可以尝试一下不同!

@Data是辣椒框架里的内容,作用是简化代码量

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.test.entitly;

public class library {
    int book_ID;
    String book_Name;
    double book_money;

    public library() {
    }

    public int getBook_ID() {
        return this.book_ID;
    }

    public String getBook_Name() {
        return this.book_Name;
    }

    public double getBook_money() {
        return this.book_money;
    }

    public void setBook_ID(int book_ID) {
        this.book_ID = book_ID;
    }

    public void setBook_Name(String book_Name) {
        this.book_Name = book_Name;
    }

    public void setBook_money(double book_money) {
        this.book_money = book_money;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof library)) {
            return false;
        } else {
            library other = (library)o;
            if (!other.canEqual(this)) {
                return false;
            } else if (this.getBook_ID() != other.getBook_ID()) {
                return false;
            } else if (Double.compare(this.getBook_money(), other.getBook_money()) != 0) {
                return false;
            } else {
                Object this$book_Name = this.getBook_Name();
                Object other$book_Name = other.getBook_Name();
                if (this$book_Name == null) {
                    if (other$book_Name == null) {
                        return true;
                    }
                } else if (this$book_Name.equals(other$book_Name)) {
                    return true;
                }

                return false;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof library;
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        result = result * 59 + this.getBook_ID();
        long $book_money = Double.doubleToLongBits(this.getBook_money());
        result = result * 59 + (int)($book_money >>> 32 ^ $book_money);
        Object $book_Name = this.getBook_Name();
        result = result * 59 + ($book_Name == null ? 43 : $book_Name.hashCode());
        return result;
    }

    public String toString() {
        int var10000 = this.getBook_ID();
        return "library(book_ID=" + var10000 + ", book_Name=" + this.getBook_Name() + ", book_money=" + this.getBook_money() + ")";
    }
}

没错,一个注释就可以完成上面的代码,里面有很多方法什么get,set,tostring等等方法

你不用@Data注释,你就要手动把上面的内容打一遍了。。。

第二步:新建一个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="目前阶段该属性随便">
    <select id="用来调用的名字" resultType="以什么类型返回">
        select * from library.book_base
    </select>
</mapper>

数据库中select是查看

Mapper内包含了数据库的增删改查,本次以查为主

目前阶段该属性随便

用来调用的名字

以什么类型返回

第一个顾名思义:随便什么名字

第二个名字:随便什么名字

第三个,还记得第一步的建的那个类吗,引用它

技巧:你可以手动输入该路径,先输入main所在的java包然后编译器会自动显示

完成后是这样的

把这段代码复制进第一步创建的XML中,目的引用刚刚上面设置的XML

    <mappers>
        <mapper url="file:TestMapper.xml"/>
    </mappers>

你会发现,这样就和官方文档的一模一样了

注意了,file:这个代码是url的协议之一,千万不要忘记打了,很重要很重要

补全main的代码

public class main {

    public static void main(String[] args) throws FileNotFoundException {
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
        try(SqlSession sqlSession = build.openSession();){
            System.out.println("连接成功");
            List<Object> list = sqlSession.selectList("第二阶段的XML设置的id");//以列的形式查看
            list.forEach(System.out::println);//快速遍历输出
        }
    }
  }

第二阶段的XML设置id,替换

运行,完美

如果你细心的话,你会发现第一个XML与第二个XML上配置有些区别

一个是config(配置)一个是mapper(制图者)

上面的截图来自官网文档下面

这个过程配上代码(main里的)

在main类里设立一个建筑者,通过调用建筑者去建筑一个工厂,工厂可以产出无数个sqlsession

*

在代码层面上一遍是不可能出问题的,更多是路径问题

例如没有打file:协议,路径多了一个些符号

解决方法,挨个试一试

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

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

相关文章

Java架构师主流架构设计模式

目录 1 主流架构设计模式1.1 分层架构模式1.1.1 分层架构的一些常见原则1.1.2 分层的单向依赖原则1.1.3 无循环依赖的原则1.1.4 避免跨层通信的原则1.2 微服务架构模式1.3 基于事件的架构模式2 整洁架构3 六边形架构4 微内核架构模式5 基于空间的架构模式6 道过滤器模式和代理模…

UE5中实现沿样条线创建网格体2-SplineMesh版本

我在之前的一篇文章中写过沿样条线创建网格体的方法&#xff1a; https://blog.csdn.net/grayrail/article/details/130453733 但该方法没有网格变形操作&#xff0c;就会导致每一段网格对象是无法连接的&#xff1a; 后来发现了SplineMesh方法可以比较好的解决这个问题&…

电子沙盘数字沙盘大数据人工智能开发教程第16课

电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课&#xff1a;新增加属性在MTGIS3d控件 public bool ShowFLGrid;//是否显 示方里网格。 public bool Atmosphere;//是否显示大气圈。&#xff08;因为WPF不支持shader功能&#xff0c;所以效果嘛。。。&#xff09; 在SDK中为…

ACK 云原生 AI 套件:云原生 AI 工程化落地最优路径

作者&#xff1a;胡玉瑜(稚柳) 前言 在过去几年中&#xff0c;人工智能技术取得了突飞猛进的发展&#xff0c;涵盖了机器学习、深度学习和神经网络等关键技术的重大突破&#xff0c;这使得人工智能在各个领域都得到广泛应用&#xff0c;对各行各业产生了深远的影响。 特别值…

Springcloud中间件-----分布式搜索引擎 Elasticsearch

该笔记是根据黑马程序员的课来自己写了一遍的,b站有对应教程和资料 第一部分 第二部分 第三部分 预计看完跟着练习5小时足够 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff…

【调试工具|mqtt-spy】mqtt客户端调试工具 mqtt-spy 详细使用教程

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

数据分析:小红书“情绪营销”如何拿捏年轻人

导语 小红书话题#不扫兴养成计划#上线&#xff0c;近30天话题浏览量破5000W&#xff0c;同比增长418.19%&#xff0c;数据表现良好。 图 | 千瓜数据 什么是不扫兴养成&#xff1f; 定义&#xff1a;想了解“不扫兴”的意思&#xff0c;那就先来看看它的反义“扫兴”吧。“扫…

2023版 STM32实战9 RTC实时时钟/闹钟

RTC简介 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 注意事项 -1- 要手动配置中断寄存器 -2- 需要等待写操作完成 -3- 时钟闹钟中段…

JVM 性能监控与故障处理工具

基础工具 jps&#xff1a;虚拟机进程状态工具 jps 命令格式&#xff1a;jps [options] [hostid] 命令可选项解释&#xff1a; 选项解释-q只输出 LVMID&#xff0c;省略主类的名称-m输出传给 main 函数的参数-l输出主类的全名&#xff0c;如果进程运行的 JAR 包&#xff0c;…

ESP8266 WiFi物联网智能插座—下位机软件实现

目录 1、软件架构 2、开发环境 3、软件功能 4、程序设计 4.1、初始化 4.2、主循环状态机 4.3、初始化模式 4.4、配置模式 4.5、运行模式 4.6、重启模式 4.7、升级模式 5、程序功能特点 5.1、日志管理 5.2、数据缓存队列 本篇博文开始讲解下位机插座节点的MCU软件…

淘宝京东拼多多商品价格采集分析接口

淘宝、京东、拼多多商品价格采集分析接口的具体信息&#xff0c;但是可以为您提供一些参考内容&#xff1a; 登录京东、天猫、淘宝、拼多多、苏宁、国美、唯品会等电商平台&#xff0c;注册并获取开发者账号和API接口权限。通过开发者账号和API接口权限&#xff0c;访问京东、…

Java之实现添加文字水印、图片水印功能

文章目录 1 添加文字水印、图片水印1.1 给图片添加文字水印1.1.1 获取原图片对象信息1.1.1.1 读取本地图片1.1.1.2 读取网络图片 1.1.2 添加水印1.1.3 确定水印位置1.1.3.1 设置固定值1.1.3.2 根据原图大小进行设置 1.1.4 获取目标图片1.1.5 完整代码 1.2 java实现给图片添加图…

HomeView/主页 的实现

1. 创建数据模型 1.1 创建货币模型 CoinModel.swift import Foundation// GoinGecko API info /*URL:https://api.coingecko.com/api/v3/coins/markets?vs_currencyusd&ordermarket_cap_desc&per_page250&page1&sparklinetrue&price_change_percentage24…

论文中的小细节——为什么论文中总是写WX而不是XW?

这是最近一个师弟问我的问题&#xff0c;为什么在论文里面总是写的 Y W X YWX YWX&#xff0c;而不是 Y X W YXW YXW&#xff1f;就算有的时候需要转置 W W W 或者 X X X&#xff0c;都不写 Y X W YXW YXW&#xff1f; 这个问题我最开始回答的是这就是约定俗成的写法&…

新能源三电系统测试如何快速连接,避免多次插拔?安规测试电连接器的作用

新能源汽车行业高速发展&#xff0c;电机、电动、电池作为核心三部件&#xff0c;必须有严格的检测已确保产品性能、质量、安全性符合要求。其中会涉及多种测试&#xff0c;如&#xff1a;防水防尘/气密测试、EOL测试、DCR测试等&#xff0c;需要连接相应的检测设备仪器。如何快…

LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹

01简介 视觉指令调整&#xff1a;针对多模式 GPT-4 级别功能而构建的大型语言和视觉助手。 视觉聊天&#xff1a;构建多模式 GPT-4 级聊天机器人构建了包含 30 个未见过的图像的评估数据集&#xff1a;每个图像都与三种类型的指令相关联&#xff1a;对话、详细描述和…

查找浏览器中保存的密码

edge浏览器 谷歌浏览器 设置-》自动填充密码-》点击密码管理工具 后就可以查看到浏览器保存的密码了

PyTorch 入门

一、说明 深度学习是机器学习的一个分支&#xff0c;其中编写的算法模仿人脑的功能。深度学习中最常用的库是 Tensorflow 和 PyTorch。由于有各种可用的深度学习框架&#xff0c;人们可能想知道何时使用 PyTorch。以下是人们更喜欢使用 Pytorch 来完成特定任务的原因。 Pytorch…

LeetCode918 环形子数组最大值

这里写自定义目录标题 题目&#xff1a; 思路&#xff1a; 1、破环成链。 由于是环形数组&#xff0c;则数组的末端会与开头相连呈环状。 只需要将长度为N的数组拷贝一次&#xff0c;拼接在原数组后&#xff0c;即得到长度为2N的数组&#xff0c;该数组即为环形数组。 如&am…

mars3d的api文档关于addDynamicPosition查找使用说明

示例链接&#xff1a;功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 api地址&#xff1a;Mars3D三维可视化平台 | 火星科技 说明&#xff1a; 1.用户反馈不知道如何搜索这个属性的用法 说明&#xff1a; 1. 示例代码中的graphic.addDynamicPosition()说明这个addDynam…