2.2 利用MyBatis实现CRUD操作

news2024/12/25 8:55:39

一、准备工作

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

二、查询表记录

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

在这里插入图片描述

在UserMapper.xml文件里创建结果映射元素
在这里插入图片描述

将UserMapper接口里抽象方法上的注解暂时注释掉
在这里插入图片描述

运行TestUserMapper测试类里的testFindAll()测试方法,查看结果
在这里插入图片描述

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

(1)添加按姓名查询的映射语句

在UserMapper.xml里添加映射语句 - findByName
在这里插入图片描述

如果要实现按姓名模糊查询用户记录,那么语句要做如下修改
在这里插入图片描述

(2)在用户映射器接口里添加按姓名查询用户记录的方法

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

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

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

@Test
    public void testFindByName() {
        String name = "王";
        // 调用用户映射器的查询方法
        List<User> users = userMapper.findByName(name);
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式
        users.forEach(user -> System.out.println(user));
    }

(4)测试按姓名查询用户记录

运行测试方法testFindByName(),查看结果

在这里插入图片描述
如果没有查询出姓“王”的用户记录,应该是编码的问题,修改MyBatis配置文件
在这里插入图片描述

三、插入表记录

1、添加插入映射语句

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

 <!--插入用户记录-->
    <insert id="insert" parameterType="User"
            useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_user(name, age, address)
        VALUES(#{name}, #{age}, #{address})
    </insert>

2、在用户映射器接口添加插入方法

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

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("遗憾,记录插入失败~");                       
    }                                                           
}                                                               

4、运行插入记录测试方法

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

5、运行按姓名查询测试方法

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

四、更新表记录

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

在UserMapper.xml里添加update映射语句

<update id="update" parameterType="User">
    UPDATE t_user SET name = #{name}, age = #{age},
    	address = #{address} WHERE id = #{id};
</update>

在这里插入图片描述

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

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

3、在测试类添加更新记录测试方法

在测试类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、运行更新用户记录测试方法

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

五、删除表记录

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

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

<delete id="deleteById" parameterType="int">
    DELETE FROM t_user WHERE id = #{id};
</delete>

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

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

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 + "]的记录删除失败~");            
    }                                                                
}                                                                    

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

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

查看用户表记录
在这里插入图片描述

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

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

相关文章

【图像处理】植物叶识别和分类

一、说明 这是国外某个学生团队尝试用机器学习方法对植物叶进行识别分类的实验。实验给出若干张植物叶图片&#xff0c;针对这些图片&#xff0c;对特征进行测量、提取、重组&#xff0c;最后用机器学习方法实现&#xff1b;该具备一定的参考价值。 现在是我们将图像处理学习应…

生成测试数据的4种方法、5种工具介绍

在软件测试中&#xff0c;测试数据是测试用例的基础&#xff0c;对测试结果的准确性和全面性有着至关重要的影响。 因此&#xff0c;在进行软件测试时&#xff0c;需要生成测试数据以满足测试场景和要求。本文将介绍什么情况下需要生成测试数据&#xff0c;如何生成测试数据&a…

100 行 C++ 代码,教你快速实现视频画面动态分割!

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 在进行视频或者图像处理时&#xff0c;经常会出现画面分割的场景。 当然了&#xff0c;这里说画面分割是对视频/图像画面的切割&#xff0c;即将同一视频/图像分割成不同的部…

javassist 入门以及dubbo中的使用案例

javassite 入门 概述原理 简单的demo记录方法执行的时间带参数和返回值javassite 占位符 dubbo中的使用代理工厂 JavassistProxyFactory代理类 org.apache.dubbo.common.bytecode.Proxyorg.apache.dubbo.rpc.proxy.InvokerInvocationHandler创建类的工具类 ClassGenerator 概述…

uniapp-ios打包安装测试

我们在做uniapp需要打ios包测试的时候&#xff0c;会有证书私钥密码、证书profile文件、私钥证书三项必填项&#xff0c;这是苹果三件套&#xff0c;必须要有的。就是下图所示 下面说一下如何获取&#xff1a; 一、申请账号 1. 申请Apple id 登录&#xff1a; https://app…

Vue3:组件高级(下)

Vue3&#xff1a;组件高级&#xff08;下&#xff09; Date: May 25, 2023 Sum: ref引用、动态组件、插槽、自定义指令 目标&#xff1a; ◆ 能够知道如何使用 ref 引用 DOM 和组件实例 ◆ 能够知道 $nextTick 的调用时机 ◆ 能够说出 keep-alive 元素的作用 ◆ 能够掌握插…

TiDB亿级数据亚秒响应查询扩缩容

目录 1 查看数据分布2 当前集群部署拓扑3 扩容TiKV节点3.1 编写扩容脚本3.2 执行扩容命令3.2.1 命令格式3.2.2 执行命令 3.3 验证扩容信息3.3.1 查看节点信息3.3.2 通过dashboard查看 4 缩容TiKV节点4.1 查看节点信息4.2 执行缩容操作4.2.1 缩容命令4.2.2 执行命令 4.3 验证缩容…

Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群,实现高并发高可用

0、引言 单机式Redis存在以下问题&#xff0c;因此需要Redis集群化来解决这些问题 1、持久化 1.1 RDB&#xff08;Redis Database Backup file &#xff09;持久化 Redis数据快照&#xff0c;简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c…

CSS 布局备忘录

CSS 布局 元素布局display:blockdisplay:inlinedisplay:inline-blockdisplay:inheritdisplay:none Position 布局Flex 布局父元素属性flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content 子元素属性orderflex-growflex-shrinkflex-basisfelxalign-self …

电商--抢购总结

文章目录 业务流程业务难点技术难点技术方案技术方向具体落地客户端流控网关流控容器流控后端接口流控数据库流控 流控总结优化读取加速异步化流程处理系统扩容 压测监控 总结参考文献 业务流程 客户端抢购流程中会涉及到商品数据的读取用于商品展示&#xff0c;运营活动数据的…

MM32F3273G8P火龙果开发板MindSDK开发教程8 - MutilButton的移植

MM32F3273G8P火龙果开发板MindSDK开发教程8 - MutilButton的移植 1、MutilButton简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块&#xff0c;可无限量扩展按键&#xff0c;按键事件的回调异步处理方式可以简化你的程序结构&#xff0c;去除冗余的按键处理硬编…

NodeJS SessionToken验证⑧

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言登录鉴权Cookie&Session ExpressSession中间件 MVC演示登录鉴权JSON Web Token (JWT) Jsonwebtoken参数sign 方法verify 方法 封装JsonWebToke…

北邮22信通:第六章查找:BST树表(代码超详细逐步图解)

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 获取更多文章 请访问专栏&#xff1a; 北邮22信通_青山如墨雨如画的博客-CSDN博客 目录 讲解 1.构造函数 2.析构函数 3.查询函数 4.删除操作 &#xf…

全新出品!阿里 P5 工程师~P8 架构师晋升路线揭秘

阿里巴巴终于公开了从初级程序员到架构师的学习路线图&#xff0c;这里相对应的基本上就是从P5到P8的晋升体系&#xff01;今天老师将会带着大家从初级程序员开始一点点分享整个晋升体系&#xff01; 职级&#xff1a;初级程序员 薪资&#xff1a;6-12K 开发年限&#xff1a;0-…

PureComponent和Component的区别和底层处理机制

PureComponent和Component都是React中的组件类&#xff0c;但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类&#xff0c;它的shouldComponentUpdate方法默认返回true&#xff0c;也就是说&#xff0c;每次调用setState或forceUpdate方法都会引发组件重新…

代码随想录第55天

1.判断子序列&#xff1a; 动态规划五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]。 注意这里是判断s是否…

百度新闻源调整:自媒体权重降低,官方媒体优势突显

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 根据黑猫发稿的消息&#xff0c;自6月1日起&#xff0c;百度新闻源取消了大部分自媒体新闻源的收录&#xff0c;包括搜狐自媒体、企鹅号、网易号&#xff0c;甚至百度自己的百家号也受到了影响。 …

X2000 Linux 低功耗

一、进入休眠 当系统启动后&#xff0c;在命令终端输入&#xff1a; echo mem> /sys/power/state 即可立即进入休眠&#xff0c;功耗也随之降低。 二、配置中断唤醒GPIO 1、确认kernel默认配置文件 进入到/tools/iconfigtool/IConfigToolApp/路径下&#xff0c;执行./…

【Pm4py第四讲】关于Conversion

本节用于介绍pm4py中的转换函数&#xff0c;包括日志、事件流、数据块的转换、Petei网、流程树、BPMN的转换、可达图、面向对象日志等。 1.函数概述 本次主要介绍Pm4py中一些常见的转换函数&#xff0c;总览如下表&#xff1a; 函数名说明convert_log_to_networkx&#xff08;…

Java(30天拿下---第一天)

Java开发&#xff08;30天拿下---第一天&#xff09; 一 hello world以及JDK,JRE,JVM二 转义字符三 注释四 代码规范五 DOS命令&#xff08;了解&#xff09;六 变量1.加号的使用2.数据类型整型浮点型字符类型布尔类型自动类型转换强制类型转换String类型 七 API文档 一 hello …