热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MyBaits系列(二)MyBatis实现增删改查的两种方式

扩展:MyBatis系列学习汇总文章目录


扩展:MyBatis系列学习汇总





文章目录









        • 一、实体类实现增删改查



          • 1.1、增 > insert

          • 1.2、删 > delete

          • 1.3、改 > update

          • 1.4、查 > select



        • 二、Map实现增删改查









一、实体类实现增删改查



  • 前置条件跟上一篇的一样,这里不在重复,这里只讲实现方式!


1.1、增 > insert

①抽象接口

Integer addUserInfo(User user);

②xml



  • 这里要注意关键字的书写方式

  • like要用飘号来包起来,防止跟关键字引起冲突!

<insert id="addUserInfo" parameterType="com.dbright.pojo.User">
insert into user(name,age,`like`)values(#{name},#{age},#{like} )
insert>

③测试类



  • session.commit(); 这个是提交事务!必须得写,不然语句不会生效!

@Test
public void addUserInfo() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//造数据
User user = new User();
user.setName("面条");
user.setAge(22);
user.setLike("王者荣耀");
Integer statusNum = mapper.addUserInfo(user);
System.out.println(statusNum);
session.commit();//提交事务
session.close();
}

④执行结果
在这里插入图片描述
在这里插入图片描述


1.2、删 > delete

①抽象接口

Integer deleteUserInfo(int id);

②xml

<delete id="deleteUserInfo" parameterType="int">
delete from user where id = #{id}
delete>

③测试类



  • 删除也需要提交事务才会生效!

@Test
public void deleteUserInfo() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Integer statusNum = mapper.deleteUserInfo(26);
System.out.println(statusNum);
session.commit();//提交事务
session.close();
}

④执行结果
在这里插入图片描述


1.3、改 > update

①抽象接口

Integer updateUserInfo(User user);

②xml

<update id="updateUserInfo" parameterType="com.dbright.pojo.User">
update user set name = #{name},age = #{age},`like` = #{like} where id = #{id}
update>

③测试类

@Test
public void updateUserInfo() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//造数据
User user = new User();
user.setId(30);
user.setName("丁大大");
user.setAge(23);
user.setLike("钓鱼");
Integer statusNum = mapper.updateUserInfo(user);
System.out.println(statusNum);
session.commit();//提交事务
session.close();
}

④执行结果



  • 原先:
    在这里插入图片描述



  • 执行后:
    在这里插入图片描述




1.4、查 > select

①抽象接口

List<User> getUserInfo();
User getUserInfoById(int id);
User getUserInfoByIF(@Param("name") String name , @Param("age") Integer age);

②xml

<select id="getUserInfo" resultType="com.dbright.pojo.User">
select * from user
select>
<select id="getUserInfoById" resultType="com.dbright.pojo.User">
select
*
from
user
where
id = #{id}
select>
<select id="getUserInfoByIF" resultType="com.dbright.pojo.User">
select
*
from
`user`
where
`name` = #{name}
and
age = #{age}
select>

③测试类

@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getUserInfo();
for (User map: users){
System.out.println(map);
}
session.close();
}
@Test
public void getUserInfoById() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User userInfo = mapper.getUserInfoById(30);
System.out.println(userInfo);
session.close();
}
@Test
public void getUserInfoByIF() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User userInfo = mapper.getUserInfoByIF("丁大大",23);
System.out.println(userInfo);
session.close();
}

④执行结果



  • 数据如下:
    在这里插入图片描述



  • 查询表里所有信息
    在这里插入图片描述



  • 待条件查询
    在这里插入图片描述



  • 多条件查询
    在这里插入图片描述




二、Map实现增删改查



  • 这里不举太多例子了,因为mapper会自动将map中的值根据key对应起来



  • 十分方便,在实际工作中,使用Map查询居多



  • 前提是前后端联调使用的是PostMan或者Yapi等联调工具



  • 如果使用swaager联调,必须使用实体类来进行开发



  • 例子:
    ①接口类



Integer addUserInfo(Map<String,Object> map);

②xml

<insert id="addUserInfo" parameterType="map">
insert into user(name,age,`like`)values(#{name},#{age},#{like} )
insert>

③测试类

@Test
public void addUserInfo() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//造数据
Map<String,Object> map = new HashMap<>();
map.put("name","面条");
map.put("age","50");
map.put("like","王者荣耀");
Integer statusNum = mapper.addUserInfo(map);
System.out.println(statusNum);
session.commit();//提交事务
session.close();
}

④执行结果
在这里插入图片描述

路漫漫其修远兮,吾必将上下求索!

如果你认为i博主写的不错!写作不易,请点赞、关注、评论加收藏!三连一下!给博主一个鼓励吧~

转载请注明出处哦~



推荐阅读
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • SQL 查询实体优化与实战技巧分享 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • Java学习第10天:深入理解Map接口及其应用 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • PHP中函数名、常量名和变量名大小写转换及规范详解
    在PHP编程中,初学者常常会遇到关于函数名、常量名和变量名大小写的问题。本文详细解析了PHP中这些名称的大小写敏感性及其命名规范,帮助开发者更好地理解和使用PHP。具体而言,文章探讨了PHP中的常量名是否区分大小写,自定义函数名的大小写敏感性,以及类名的大小写规则。此外,还提供了实用的代码示例和最佳实践,以确保代码的可读性和一致性。 ... [详细]
author-avatar
手机用户2502892647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有