mybatis入门到熟练(一)

2023-11-16

一、创建一个空的maven项目

使用idea创建一个空的maven项目,引入依赖

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.4</version>
    </dependency>
</dependencies>

二、配置mybatis

先来一个总体的结构。有点不好看,就是为了熟悉mybatis。
在这里插入图片描述
再看一下我们的数据库
在这里插入图片描述

1.在resource目录下增加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>

    <properties>
        <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
        <property name="jdbc.user" value="你的账号" />
        <property name="jdbc.pass" value="你的密码" />
        <property name="jdbc.url" value="你的url" />
    </properties>

    <!--便于后面解析对象-->
    <typeAliases>
        <package name="com.test" />
    </typeAliases>

    <!-- Continue going here -->
    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"> </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.user}" />
                <property name="password" value="${jdbc.pass}" />
            </dataSource>
        </environment>
    </environments>
    
    <!-- 告诉mybatis去这里找你的mapper ,这里不写会报错找不到mapper-->
    <mappers>
        <mapper resource="BlogMapper.xml" />
    </mappers>

</configuration>

2.在resource目录下增加BlogMapper.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.test.Tutorial">

    <select id="selectBlog" resultType="com.test.Blog">
        select * from Blog where id = #{id}
    </select>

    <insert id="insertBlog" parameterType="Blog">
        insert into Blog (id,title) values (#{id},#{title})
    </insert>

    <update id="updateBlog" parameterType="Blog">
        UPDATE Blog SET title=#{title} WHERE id=#{id}
    </update>

    <delete id="deleteBlog" parameterType="Integer">
        DELETE FROM BLOG WHERE id=#{id}
    </delete>

</mapper>

三、具体Java代码

实体类

package com.test;

/**
 * @author lichenhui
 * @version 1.0
 * @ClassName Blog
 * @date 2021/5/8 10:59
 */
public class Blog {
    int id;
    String title;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "Blog{" +
                "id=" + id +
                ", title='" + title + '\'' +
                '}';
    }
}

具体演示类
建议增删改查一个一个的测试,测试其中的一个注释掉其他的

package com.test;

import ......

/**
 * @author lichenhui11
 * @version 1.0
 * @ClassName Tutorial
 * @date 2021/5/8 11:11
 */
public class Tutorial {
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        int row;
        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 查询数据库内容
            sqlSession = sqlSessionFactory.openSession();
            Blog blog = sqlSession.selectOne("com.test.Tutorial.selectBlog",1);
            System.out.println(blog);

            Blog b = new Blog();
            // 插入数据库内容
            b.setTitle("b");
            b.setId(2);
            row = sqlSession.insert("com.test.Tutorial.insertBlog",b);
            System.out.println(row);
            sqlSession.commit();

             //更新数据库内容
            b.setId(2);
            b.setTitle("c");
            row = sqlSession.update("com.test.Tutorial.updateBlog",b);
            System.out.println(row);
            sqlSession.commit();


            //删除数据库内容
            row = sqlSession.delete("com.test.Tutorial.deleteBlog",2);
            System.out.println(row);
            sqlSession.commit();

        } catch (IOException e) {
            e.printStackTrace();
            assert false;
            sqlSession.rollback();
        }finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }

}

结论:
基于xml的方式,对数据库进行增删改查

赞赞赞

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis入门到熟练(一) 的相关文章

  • 重复键错误不会取消/回滚mysql事务

    当在 mysql innodb 事务中时 我希望重复的键错误会导致回滚 它没有 相反 它只是抛出一个错误并继续执行下一个命令 一旦到达 COMMIT 命令 事务将被提交 没有重复键导致命令 这是预期的行为吗 如果是这样 如何设置它以便在发生
  • 用于制作代码编辑器的 JavaFX 相当于 JSyntaxPane 的什么?

    以前在 Swing 中 我使用过JSyntaxPane用于制作一个小型 Java 源代码编辑器 为了练习 我决定用 JavaFX 重做整个项目并添加对更多语言的支持 最好是尽可能多 不过好像没有什么类似的JSyntaxPane 一些研究让我
  • 如何通过 MySQL Workbench 或 CLI 或 MySQLWeb 数据库管理应用程序连接到 Pivotal Cloud Foundry (PCF) 上的 MySQL 服务?

    我有一个Spring Boot based REST部署在的应用程序Pivotal Cloud Foundry PCF 并且工作正常 但是这个 REST 应用程序到目前为止还没有任何数据库连接 因此 我决定安装MySQL服务于PCF从市场上
  • Google 表格使用 API 密钥而不是 client_secret.json

    In the QuickStart java示例Java 快速入门 https developers google com sheets api quickstart java他们使用OAuth client ID识别该应用程序 这会弹出一
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • 递归取消 allOf CompletableFuture

    如果我有 CompletableFuture
  • 生成一定长度的所有排列

    假设我们有一个字母表 abcdefghiklimnop 如何以有效的方式以五个一组的形式重复该字母表来递归生成排列 几天来我一直在为此苦苦挣扎 任何反馈都会有帮助 本质上这与 生成给定字符串的所有排列 https stackoverflow
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • Java 8:如何创建毫秒、微秒或纳秒的 DateTimeFormatter?

    我需要创建格式化程序来解析具有可选的毫秒 微米或纳秒分数的时间戳 例如 对于我的需求 我看到以下机会 DateTimeFormatter formatter new DateTimeFormatterBuilder append DateT
  • Hybris:如何在impex中导入zip文件中的媒体?

    我知道我们可以导入未像这样压缩的图像 siteResource jar com project initialdata constants ProjectInitialDataConstants projectinitialdata imp
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • 如果 Modelmapper 中的整个属性为空,如何排除它们

    ModelMapper 是否 http modelmapper org http modelmapper org 支持什么排除属性 如果该值为空 我刚刚找到了 PropertyMap 但这对我来说是一种限制 因为我必须描述我想要的特定属性
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • junit4 使用特定测试方法创建测试套件

    在 junit4 中 我想执行来自不同类的特定测试方法 即想要使用来自不同类的特定测试方法创建一个测试套件 假设我有两门课 public class Test Login Test public void test Login 001 Sy
  • 假布尔值=真?

    我在一本书中找到了这段代码 并在 Netbeans 中执行了它 boolean b false if b true System out println true else System out println false 我只是不明白为什

随机推荐

  • PLSQL的使用

    目录 1 PLSQLl的安装 配置文件配置教程地址 2 PLSQL建表出现乱问题 Oracle PLSQL 表中字段 注释时为乱码 解决方式 1 PLSQLl的安装 配置文件配置教程地址 https blog csdn net master
  • java垃圾回收机制

    今天算是对java的gc有了一定的了解 三篇文章做个标记 配合上篇文章来看 http www daniel journey com archives 139 另外推荐三篇很棒的文章 JVM调优总结 Java 6 JVM参数选项大全 一次Ja
  • ng-class的几种用法

    方法一 div div checker disabled checker 是CSS样式 selectAllButton是判断条件 值为 true or false 方法二 div div item disab是判断条件 值为 true or
  • linux rootfs制作

    作一个嵌入式Linux rootfs 并且实现 web 服务 1 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来 且不需要运行用户进程的话 是不需要文件系统的 文件系统简单的说就是一种目录结构 由于 linux操作系统的设备在系统
  • 数组切片[1::2]怎么理解

    python中数组切片 在数组a中 有三个地方可以设置参数a 位置 列表初始索引 默认为0 位置 列表结束索引 默认到最后一个元素 包含最后一个元素 位置 为步长 默认为1 a np arange 1 10 print a 1 2 3 4
  • kafka创建话题遇到的错误

    确定Kafka安装和启动正确 ZooKeeper可以查到所有的Brokers 但执行 kafka topics sh create zookeeper localhost 2181 replication factor 3 partitio
  • Linux iperf3:网络性能测试工具

    文章目录 iperf3简介 安装 详细命令参数 Server 端参数 Client 端参数 示例 服务端 先启动 客户端 iperf3简介 iPerf3是用于主动测试IP网络上最大可用带宽的工具 它支持时序 缓冲区 协议 TCP UDP S
  • 点云旋转平移(二)—python open3d点云平移

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 点云旋转平移介绍 请
  • 算法训练Day7

    目录 LeetCode454 四数相加 1 思路 2 代码实现 3 复杂度分析 4 思考 Leetcode383 赎金信 1 思路 2 代码实现 3 复杂度分析 4 思考 Leetcode15 三数之和 方法一 双指针法 1 思路 2 代码
  • c++ libuv工作队列

    1 说明 libuv 提供了一个线程池 可用于运行用户代码 libuv 中的工作队列中的任务会在线程池中执行 libuv 中的线程池在内部用于运行所有文件系统操作以及 getaddrinfo 和 getnameinfo 请求 libuv 中
  • Linux中Grep命令(在文本中搜索指定文本)

    Grep Global regular expression print 全局正则表达式输出 的缩写 他是Linux中最强的的命令之一 grep在一个或多个输入文本中搜索与给定模式匹配的行 并将每条匹配的行写入标准的输出 如果未至定文件 则
  • 马踏棋盘全部解

    include stdio h int a 12 12 0 棋盘 int cut 0 缓存马所走的步数 long count 0 计算有多少种踏法 void horse int x int y bool walk int index int
  • 大数据--pyspark远程连接hive

    上一篇文章介绍了python连接hive的过程 通过地址 端口号访问到hive并对hive中的数据进行操作 这一篇文章介绍一下怎么通过windows本地pyspark 本地部署好的spark 远程虚拟机的hive 完成本地pyspark对h
  • netcore 判断是否ajax,ASP.NET Core 判断请求是否为Ajax请求

    原文 ASP NET Core 判断请求是否为Ajax请求 我们可以通过HTTP请求头来判断是否为Ajax请求 Ajax请求的request headers里都会有一个key为x requested with 值为XMLHttpReques
  • SQL实战(4)——2021年11月每天新用户的次日留存率

    现有表 用户行为日志表tb user log 问题 统计2021年11月每天新用户的次日留存率 保留2位小数 注 次日留存率为当天新增的用户数中第二天又活跃了的用户数占比 如果in time 进入时间和out time 离开时间跨天了 在两
  • git系列之-如何把项目发布到github

    111111111111111111111111111111111111111111111111111111
  • 华为AR系列路由器密码重置

    1 设备重加电启动 按Ctrl B进入bootrom菜单 密码是huawei 2 修改启动配置文件名称 Main Menu 1 Default Startup 2 Serial Menu 3 Network Menu 4 Startup S
  • Ubuntu16.04安装JDK1.8详细步骤

    检测是否安装JDK root instance cqxyyrb2 java The program java can be found in the following packages default jre gcj 5 jre head
  • WebView加载h5页面弹窗无法显示问题和申请摄像头权限问题做个记录

    参考文章 WebView 加载H5页面空白问题 WebView使用getUserMedia 首先需要设置webview支持js 在Android 9 0后 访问地址如果是http开头的 还需要在配置文件里设置允许http访问 android
  • mybatis入门到熟练(一)

    一 创建一个空的maven项目 使用idea创建一个空的maven项目 引入依赖