Java企业级开发学习笔记(2.2)利用MyBatis实现CRUD操作

news2024/10/2 20:33:09

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/ajSEO】

文章目录

  • 一、准备工作
  • 二、查询表记录
    • 2.1 在映射器配置文件里引入结果映射元素
    • 2.2 添加按姓名查询用户记录功能
      • 2.2.1 添加按姓名查询的映射语句
      • 2.2.2 添加按姓名查询用户记录的测试方法
      • 2.2.3 添加按姓名查询用户记录的测试方法
      • 2.2.4 测试按姓名查询用户记录
  • 三、插入表记录
    • 3.1 添加插入映射语句
    • 3.2 在用户映射器结构添加插入方法
    • 3.3 在测试类里测试插入方法
    • 3.4 运行插入记录测试方法
    • 3.5 运行姓名查询测试方法
  • 四、更新表记录
    • 4.1 在用户映射器配置文件里添加更新映射语句
    • 4.2 在用户映射器接口添加更新方法
    • 4.3 在测试类TestUserMapper里添加测试方法testUpdate()
    • 4.4 运行更新用户记录测试方法
  • 五、删除表记录
    • 5.1 在用户映射器配置文件里添加删除映射语句
    • 5.2 在用户映射器接口里添加删除方法
    • 5.3 在测试类里添加删除记录测试方法
    • 5.4 运行按编号删除记录测试方法


一、准备工作

  • 打开MyBatisDemo项目
    在这里插入图片描述

二、查询表记录

2.1 在映射器配置文件里引入结果映射元素

  • UserMapper.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="cn.kox.mybatis.mapper.UserMapper">

    <!--结果映射:用户映射-->
    <resultMap id="userMap" type="User">
        <result column="id" jdbcType="INTEGER" property="id" javaType="int"/>
        <result column="name" jdbcType="VARCHAR" property="name" javaType="String"/>
        <result column="age" jdbcType="INTEGER" property="age" javaType="int"/>
        <result column="address" jdbcType="VARCHAR" property="address" javaType="String"/>
    </resultMap>

    <!--按编号查询用户记录-->
    <select id="findById" parameterType="int" resultType="User">
        SELECT * FROM t_user WHERE id = #{id};
    </select>

    <!--查询全部用户记录-->
    <select id="findAll" resultMap="userMap">
        SELECT * FROM t_user;
    </select>
</mapper>

  • UserMapper接口里抽象方法上的注解暂时注释掉在这里插入图片描述
  • 运行TestUserMapper测试类里的testFindAll()测试方法,查看结果
    在这里插入图片描述

2.2 添加按姓名查询用户记录功能

2.2.1 添加按姓名查询的映射语句

  • UserMapper.xml里添加映射语句 - findByName
    在这里插入图片描述
  • 如果要实现按姓名模糊查询用户记录,那么语句要做如下修改
    <!--按姓名查询用户记录-->
    <select id="findByName" resultType="User">
        SELECT * FROM t_user WHERE name LIKE CONCAT(#{name}, "%");
    </select>

2.2.2 添加按姓名查询用户记录的测试方法

  • UserMapper接口里添加findByName()方法
    在这里插入图片描述

2.2.3 添加按姓名查询用户记录的测试方法

  • 在测试类TestUserMapper里添加测试方法testFindByName()
    在这里插入图片描述

2.2.4 测试按姓名查询用户记录

  • 运行测试方法testFindByName(),查看结果
    在这里插入图片描述

三、插入表记录

3.1 添加插入映射语句

  • UserMapper.xml文件里添加插入映射语句
    在这里插入图片描述

3.2 在用户映射器结构添加插入方法

  • UserMapper接口里添加insert()方法,方法名insert与插入映射语句里的id值保持一致

在这里插入图片描述

3.3 在测试类里测试插入方法

  • 在测试类TestUserMapper里添加测试方法testInsert()
    @Test // 测试插入用户记录
    public void testInsert() {
        // 创建用户对象
        User user = new User();
        // 设置对象属性
        user.setName("王雨涵");
        user.setAge(30);
        user.setAddress("龙马潭区长桥路2号");
        // 插入用户记录
        int count = userMapper.insert(user);
        // 提交数据库操作
        sqlSession.commit();
        // 判断插入记录是否成功
        if (count > 0) {
            System.out.println("恭喜,记录插入成功~");
            System.out.println("插入的新记录:" + user);
        } else {
            System.out.println("遗憾,记录插入失败~");
        }
    }

3.4 运行插入记录测试方法

在这里插入图片描述

3.5 运行姓名查询测试方法

在这里插入图片描述

四、更新表记录

4.1 在用户映射器配置文件里添加更新映射语句

  • UserMapper.xml里添加update映射语句
    <!--更新用户记录-->
    <update id="update" parameterType="User">
        UPDATE t_user SET name = #{name}, age = #{age},
                          address = #{address} WHERE id = #{id};
    </update>

4.2 在用户映射器接口添加更新方法

  • UserMapper接口里添加update()方法
    在这里插入图片描述

4.3 在测试类TestUserMapper里添加测试方法testUpdate()

  • 在测试类TestUserMapper里添加测试方法testUpdate()
    @Test // 测试更新用户记录                                    
    public void testUpdate() {
        // 查找id为4的用户记录                                   
        User user = userMapper.findById(4);
        // 输出更新前的记录                                      
        System.out.println("更新前的记录:" + user);
        // 修改用户对象                                        
        user.setName("萌萌哒");
        user.setAge(25);
        user.setAddress("北京朝阳区北苑路6号楼");
        // 更新用户记录                                        
        int count = userMapper.update(user);
        // 判断更新是否成功                                      
        if (count > 0) {
            // 提交数据库操作                                   
            sqlSession.commit();
            // 提示用户更新成功                                  
            System.out.println("恭喜,记录更新成功~");
            System.out.println("更新后的记录:" + user);
        } else {
            // 提示用户更新失败                                  
            System.out.println("遗憾,记录更新失败~");
        }
    }

4.4 运行更新用户记录测试方法

  • 运行测试方法testUpdate(),查看结果
    在这里插入图片描述

五、删除表记录

5.1 在用户映射器配置文件里添加删除映射语句

  • UserMapper.xml件里添加映射语句deleteById
    <!--按编号删除用户记录-->
    <delete id="deleteById" parameterType="int">
        DELETE FROM t_user WHERE id = #{id};
    </delete>

5.2 在用户映射器接口里添加删除方法

  • UserMapper接口里添加deleteById()方法,方法名要与删除映射语句的id值保持一致
    在这里插入图片描述

5.3 在测试类里添加删除记录测试方法

  • 在测试类TestUserMapper里添加测试方法testDeleteById()
@Test // 测试按编号删除用户记录                                                 
public void testDeleteById() {                                       
    // 查找id为4的用户记录                                                   
    int id = 4;                                                      
    User user = userMapper.findById(id);                             
    // 输出待删除的记录                                                      
    System.out.println("待删记录:" + user);                              
    // 按编号删除用户记录                                                     
    int count = userMapper.deleteById(id);                           
    // 判断删除是否成功                                                      
    if (count > 0) {                                                 
        // 提交数据库操作                                                   
        sqlSession.commit();                                         
        // 提示用户删除成功                                                  
        System.out.println("恭喜,编号为[" + id + "]的记录删除成功~");            
    } else {                                                         
        // 提示用户删除失败                                                  
        System.out.println("遗憾,编号为[" + id + "]的记录删除失败~");            
    }                                                                
}                                                                    

5.4 运行按编号删除记录测试方法

  • 运行测试方法testDeleteById(),查看结果
    在这里插入图片描述

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

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

相关文章

17、嵌入式Servlet容器

文章目录 1、切换嵌入式Servlet容器2、定制Servlet容器 【尚硅谷】SpringBoot2零基础入门教程-讲师&#xff1a;雷丰阳 笔记 路还在继续&#xff0c;梦还在期许 1、切换嵌入式Servlet容器 ● 默认支持的webServer ○ Tomcat, Jetty, or Undertow ○ ServletWebServerApplicati…

C++linux高并发服务器项目实践 day7

Clinux高并发服务器项目实践 day7 进程间通信匿名管道管道的特点匿名管道的使用创建匿名管道查看管道缓冲大小命令查看管道缓冲大小函数匿名管道通信案例 管道的读写特点 有名管道有名管道的使用写FIFO管道读FIFO管道总结有名管道实现简单版聊天功能 进程间通信 进程是一个独立…

SRv6实践项目(五):ONOS控制平面实现控制

在先前的几个小结中&#xff0c;一共了解了&#xff1a; p4的编译过程p4runtime的实现原理NDP协议的简单工作流程YANG模型的定义以及用处基于YANG的配置和状态的读写 一共实现了&#xff1a; Mininet拓扑创建p4的基本框架编写对数据平面进行订阅以实现状态读取对数据平面进行…

OJ系统刷题 第十一篇(重点题)

13463 - 折点计数&#xff08;难题&#xff01;重点题&#xff01;&#xff09; 时间限制 : 1 秒 内存限制 : 128 MB 给定 n 个整数表示一个商店连续 n 天的销售量。 如果某天之前销售量在增长&#xff0c;而后一天销售量减少&#xff0c;则称这一天为折点&#xff0c;反过来…

玩转车载影像传输技术 ,学习Opengl与Surface渲染提升车载影像传输效果

近年来&#xff0c;随着智能化汽车的快速发展&#xff0c;车载倒车影像逐渐成为了汽车安全辅助系统的标配&#xff0c;而高清传输的倒车影像则成为了目前主流的倒车影像传输方式。在这一过程中&#xff0c;Opengl与Surface渲染技术的应用也是不可或缺的一环。 一、高清传输倒车…

E. Archaeology(纯思维)

Problem - E - Codeforces 爱丽丝买了一个刚果总理视频的订阅&#xff0c;正在看一部关于苏格兰卡特林湖的因子岛的考古发现的纪录片。考古学家发现了一本书&#xff0c;其年代和来源都不明。也许爱丽丝可以对它进行一些解释&#xff1f; 这本书包含一串字符 "a"、&…

【AI绘画】Stable Diffusion的介绍及程序示例

Stable Diffusion 1.背景2.StableD 的原理3.StableD 的应用3.1.如何使用 StableD 进行图像生成3.2 图像生成与编辑3.2.1 生成新图像3.2.2 图像编辑 1.背景 近年来&#xff0c;随着人工智能技术的发展&#xff0c;图像生成和合成技术得到了很大的发展。Stable Diffusion (Stable…

MyBatis的关联映射和缓存机制

学习目标&#xff1a; 了解数据表之间的三种关联关系了解对象之间的三种关系熟悉关联关系中的嵌套查询和嵌套结果掌握一对一关联映射掌握—对多关联映射掌握多对多关联映射熟悉Mybatis的缓存机制 文章概述&#xff1a; 前面几章介绍了MyBatis的基本用法、关联映射和动态SQL等…

CompletableFuture异步编排

CompletableFuture异步编排 1、CompletableFuture异步编排1.1 为什么需要异步编排1.2 CompletableFuture介绍1.3 创建异步对象1.4 线程串行化与并行化方法1.5 多任务组合1.6 优化商品详情页(业务代码)1.6.1 未优化之前的代码1.6.2 使用CompletableFuture异步编排1.6.3 测试功能…

Linux 下 REST 客户端的新选择:Insomnia 3.0

正在为 Linux 桌面端找一个免费的 REST 客户端&#xff1f; 别睡不着觉了&#xff01;试试 Insomnia。 这个应用是跨平台的&#xff0c;可以工作在 Linux、macOS、Windows。开发者 Gregory Schier 告诉我们他创造这个应用是为了“帮助开发者处理和 REST API 的通信”。他还说&a…

如何在Java中创建临时文件?

在Java程序中&#xff0c;有时需要创建临时文件来暂存数据或者执行某些操作。Java提供了许多方式来创建临时文件。在本教程中&#xff0c;我们将介绍如何使用Java标准库来创建临时文件。 一、使用File.createTempFile()方法 Java标准库中的File类提供了createTempFile()方法来…

设计模式--单例模式

介绍 所谓类的单例模式 就是采取一定的方法保证在整个软件系统中对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 比如 Hibemate的SessionFactory 它充当数据存储源的代理 并负责创建Session对象 SessionFactory并不是轻量级的 一般情况下 一个…

Java中的Map(三种双列集合万字详解)

点击可查看单列集合Set万字详解&#xff1a;其中还包含哈希解读和底层分析。 文章目录 前言一、Map1.Map集合常用的API代码演示&#xff1a;1.Map集合的基本功能2.Map集合的获取功能3.Map的getOrDefault()方法 2.Map集合的三种遍历1.键找值、值找键2.键值对3.Lambda表达式 二、…

【C++11】晦涩难懂语法系列:可变参数模板

目录 可变参数模板 1.1 概念 1.2 可变参数模板定义 1.3 参数包的展开方式 1.3.1 递归展开参数包 1.3.2 逗号表达式展开参数包 1.4 STL的emplace系列函数 可变参数模板 1.1 概念 在C语言阶段&#xff0c;我们已经接触过可变参数&#xff0c;比如scand、printf等等 这里…

9.2 回归分析

学习目标&#xff1a; 回归分析是一种广泛应用于数据分析和预测的统计方法&#xff0c;可以用来探索自变量与因变量之间的关系并进行预测。我学习回归分析&#xff0c;我会采取以下步骤&#xff1a; 学习基本概念&#xff1a;回归分析中的基本概念包括自变量和因变量、回归系数…

运放专题:运放输入端交直流混合信号隔直放大

运放输入不隔直放大 运放输入端不隔直&#xff0c;那么经过运放放大后&#xff0c;交流成分放大了&#xff0c;直流成分也被放大了。看下面的仿真&#xff1a; 交流信号为&#xff1a;振幅3V, 频率5K的正弦波&#xff0c;直流偏置为1V 可以看到&#xff0c;交流信号被放大的…

【Linux】匿名管道代码实现-mypipe

文章目录 管道介绍什么是管道&#xff1a;管道的原理管道的特点 具体代码详写创建初始文件makefile编写定义任务列表-task.hpp分阶段代码编写总代码展示: ctrlProcess.cc 编写头文件包含(如有不会,自己查谷歌)定义全局变量以解耦main,函数框架EndPoint定义creatProcess 创建管道…

Apollo配置中心使用篇

Apollo配置中心使用篇 常见配置中心对比Apollo核心概念Apollo核心特性Apollo架构设计各模块介绍服务端设计客户端设计Apollo与Spring集成的底层原理 Apollo安装安装apollo-portalconfig service和admin service部署多网卡问题解决修改Portal环境配置调整ApolloPortal配置 Apoll…

【产品设计】用户操作日志

日志记录了代码的执行过程&#xff0c;根据目的不同&#xff0c;可以分为系统日志和操作日志。 一、什么是日志 日志记录了代码的执行过程。根据目的不同&#xff0c;可分为系统日志和操作日志。 1&#xff09;系统日志 记录系统中硬件、软件和系统问题的信息&#xff0c;同…

C#基础学习--枚举器和迭代器

目录 枚举器和可枚举类型 IEnumerator 接口 IEnumerable 接口 实现 IEnumerable 和 IEnumerator的示例 泛型枚举接口 迭代器 迭代器块 使用迭代器来创建枚举器 使用迭代器来创建可枚举类型 常见迭代器模式 产生多个可枚举类型 将迭代器作为属性 迭代器实质 枚举器和可…