首页 > 其他分享 >MyBatis-增删改查操作&一些细节

MyBatis-增删改查操作&一些细节

时间:2025-01-16 20:27:55浏览次数:3  
标签:username 改查 public 增删 user MyBatis password id User

目录

删除

新增

 修改

查询

 小结:


删除功能

  • 需求:根据ID删除用户信息

  • SQL:delete from user where id = 5;

  • Mapper接口方法(注意这里不是实现类

    /**
     * 根据id删除
     */
    @Delete("delete from user where id = #{id}")
    public void deleteById(Integer id);
  • 编写单元测试方法进行测试

@Test
public void testDeleteById(){
    userMapper.deleteById(36);
}

运行单元测试,结果如下:


新增功能

  • 需求:添加一个用户

  • SQL:

    insert into user(username,password,name,age) values('zhouyu','123456','周瑜',20);

    //user后加()用来指定要为user的哪些属性赋值,这个很重要很常用。

  • Mapper接口:

/**
 * 添加用户
 */
@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")
public void insert(User user);

(重点) 如果在SQL语句中,我们需要传递多个参数,我们可以把多个参数封装到一个对象中。然后在SQL语句中,我们可以通过#{对象属性名}的方式,获取到对象中封装的属性值。

  • 单元测试:

在测试类中添加测试方法,代码如下:

@Test
public void testInsert(){
    User user = new User();
    user.setUsername("admin");
    user.setPassword("123456");
    user.setName("管理员");
    user.setAge(30);
    userMapper.insert(user);
}

这里如果采用有参构造,对于不需要赋值的属性可以设置为null,小细节。 

例如:User user = new User(null, "lisi", "123", "李四", 23,null);

运行结果如下:

 


 修改功能

  • 需求:根据ID更新用户信息

  • SQL:

    update user set username = 'zhouyu', password = '123456', name = '周瑜', age = 20 where id = 1;

  • Mapper接口方法:

/**
 * 根据id更新用户信息
 */
@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")
public void update(User user);

单元测试:

在测试类中添加测试方法,代码如下:

@Test
public void testUpdate(){
    User user = new User();
    user.setId(6);
    user.setUsername("admin666");
    user.setPassword("123456");
    user.setName("管理员");
    user.setAge(30);
    userMapper.update(user);
}

运行结果如下:

 


查询功能

  • 需求:根据用户名和密码查询用户信息

  • SQL:select* from user where user name = 'zhouyu' and password = '123456'

  • Mapper接口方法:

/**
 * 根据用户名和密码查询用户信息
 */
@Select("select * from user where username = #{username} and password = #{password}")
public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);

(重点) @param注解的作用是为接口的方法形参起名字的。(由于用户名唯一的,所以查询返回的结果最多只有一个,可以直接封装到一个对象中)

说明:基于官方骨架创建的springboot项目中,接口编译时会保留方法形参名,@Param注解可以省略 (#{形参名})。

  • 单元测试:

在测试类中添加测试方法,代码如下:

@Test
public void testFindByUsernameAndPassword(){
    User user = userMapper.findByUsernameAndPassword("admin666", "123456");
    System.out.println(user);
}

 运行结果如下:


 小结:

1. @Param 注解的使用场景 ? 如果接口方法形参中,需要传递多个参数,需要通过 @Param 注解为参数起名字; 在基于SpringBoot 官方骨架创建的 SpringBoot 项目中,该注解可以省略; 2. 在sql语句中通过表后加()的方式用来指定要为表的哪些字段赋值。 3. 在进行测试时,如果采用有参构造对对象进行初始化,那么对于不需要赋值的属性可以设置为null,小细节。 

标签:username,改查,public,增删,user,MyBatis,password,id,User
From: https://blog.csdn.net/m0_63949203/article/details/145159285

相关文章

  • Day08-后端Web实战——JDBC&Mybatis
    目录前言1.JDBC1.1概述1.2快速入门1.3API详解1.3.1DriverManager1.3.1.1注册驱动1.3.1.2获取链接1.3.2Connection&Statement1.3.3ResultSet1.3.4PreparedStatement1.3.4.1SQL注入演示1.3.4.2SQL注入解决2.Mybatis基础2.1介绍2.2快速入门2.2.1准备......
  • MyBatis缓存原理及插件实现
    目录MyBatis缓存原理缓存的工作机制一级缓存:二级缓存:MyBatis插件实现MyBatis缓存原理缓存的工作机制如果会话查询了一条数据,此数据会存入一级缓存;若会话被关闭或提交,则,其数据转存入二级缓存;新会话若再次查询之前查询过的数据,就从二级缓存中获取;不同的Mapper,查询出......
  • MyBatis核心流程
    目录数据处理的发展MyBatis概述​编辑 MyBatis核心流程观察测试类重要对象和流程SqlSessionFactory[初始化]创建SqlSession会话对象 创建XxxMapper[代理]对象执行SQL操作[复杂一丢丢] ​编辑数据处理的发展1.原生JDBC2.DBUtils工具类[jdbctemp..]......
  • MyBatis基于XML的详细使用-缓存
    MyBatis基于XML的详细使用-缓存1、介绍MyBatis内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。为了使它更加强大而且易于配置,我们对MyBatis3中的缓存实现进行了许多改进。默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。要启用......
  • 初步使用动态web项目实现增删改查
    我目前使用的工具是eclipse(2024-12),并且没用使用maven这类工具,数据库使用的是MySQL,服务器为tomcat10.1。在编码并实现增删改查操作前,要进行一些准备工作。首先在file里创建一个动态web项目(DymamicWebProject),我们连接数据库要提前连接驱动与一个包,需要右键这个文件,选择构建路径,......
  • 1.15 SQL语句练习(增删改查)
    1.DML(增删改)增给指定列添加数据INSERTINTO表名(列名1,列名2,…)VALUES(值1,值2,…);给全部列添加数据INSERTINTO表名VALUES(值1,值2,…);批量添加数据INSERTINTO表名(列名1,列名2,…)VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;INSERTINTO表名VALUES(......
  • 数据结构——链表(概念,类型,java实现、增删、优缺点)
    文章目录链表链表介绍链表类型1.单向链表2.双向链表3.循环链表链表实现(增删改查)链表节点插入节点删除节点链表的特点与优势......
  • 【吐血整理】Java 的 MyBatis 从入门到精通。
    目录❤️二、开发环境搭建指南......
  • 一文搞懂Java的Mybatis删除操作,附详细代码
    目录❤️二、Mybatis基础快速回顾......
  • MySQL基础 数据库表的增删改
    Mysql数加科技整理一、原理定义概念定义数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。数据库是长期储存在计算机内、有组织的、可共享的数据集合。分类:​ 非结构化数据:​ 数据相对来讲没有固定的特点,这种数据非常不便于检索......