2023.11.27 关于 Mybatis 增删改操作

目录

引言

增加用户操作

删除用户操作

修改用户操作


阅读下述文章之间 建议点击下方链接先了解 MyBatis 的创建与使用

MyBatis 的创建与使用


建议点击下方链接先了解 单元测试 的创建与使用

Spring Boot 单元测试的创建与使用


引言

  • 为了方便下文实现增、删、改操作
  • 我们先在数据库中创建好 user 表

增加用户操作

实例理解

  • 此处我们想 新增一条用户信息

初始化 UserMapper 接口

  • 此处我们在接口中添加两个 add 方法
  • add方法 返回影响行数
  • add2方法 返回影响行数 和 自增 id 值
java 复制代码
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

//添加 @Mapper 注解 代表该接口会伴随这 项目的启动而注入到容器中
@Mapper
public interface UserMapper {

//    新增用户信息 返回影响行数
    Integer add(User user);

//    新增用户信息,返回影响行数 和 自增 id 值
    Integer add2(User user);
}

初始化 UserMapper XML 文件

  • 在与 接口相对应的 XML 文件中
  • 添加上与 add 方法 和 add2 方法 相对应的 sql 语句
  • 理解其中 add2 xml 语句中 设置的两个属性
  • useGeneratedKeys 表示在插入记录时,要求数据库生成主键值,并将生成的主键值返回给 MyBatis
  • keyProperty 指定生成的主键值设置到 Java 对象的哪个属性中,此处是设置到对象名为 id 的属性
XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">

    <insert id="add">
        insert into user(name,age,password) values(#{name},#{age},#{password})
    </insert>

    <insert id="add2" useGeneratedKeys="true" keyProperty="id">
        insert into user(name,age,password) values(#{name},#{age},#{password})
    </insert>

</mapper>

创建 add 的测试方法

  • 创建一个 user 对象 ,并设置其属性,再使用 add 方法将其新增到数据库中
java 复制代码
@Test
void add() {
    User user = new User();
    user.setName("maolin");
    user.setAge(20);
    user.setPassword("123");
    int result = userMapper.add(user);
    System.out.println("add 方法:" + (result == 1 ? "新增成功" : "新增失败"));
}

执行测试方法

  • 测试方法执行成功
  • 数据库成功新增用户信息

创建 add2 的测试方法

  • 创建一个 user 对象 ,并设置其属性,再使用 add2 方法将其新增到数据库中
java 复制代码
@Test
void add2() {
    User user = new User();
    user.setName("zhangsan");
    user.setAge(38);
    user.setPassword("123456");
//    result 为受影响行数
    int result = userMapper.add2(user);
    System.out.println("add2 方法:" + (result == 1 ? "新增成功" : "新增失败"));
    System.out.println("自增 id 值为:" + user.getId());
}

执行测试方法

  • 测试方法执行成功
  • 数据库成功新增用户信息
  • 且自增 id = 9

删除用户操作

实例理解

  • 此处我们想 根据 id 删除对应用户信息

初始化 UserMapper 接口

  • 此处我们在接口中添加一个 delete 方法
  • 其返回值为 受影响行数
java 复制代码
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

//添加 @Mapper 注解 代表该接口会伴随这 项目的启动而注入到容器中
@Mapper
public interface UserMapper {

//    根据用户id 删除用户信息
    Integer delete(@Param("user_id") Integer id);
}

初始化 UserMapper XML 文件

  • 在与 接口相对应的 XML 文件中
  • 添加上与 delete 方法相对应的 sql 语句
XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">

    <delete id="delete">
        delete from user where id = #{user_id}
    </delete>

</mapper>

创建 delete 的测试方法

  • 此处传入参数 id = 9
java 复制代码
@Test
void delete() {
    int result = userMapper.delete(9);
    System.out.println("delete 方法:" + (result == 1 ? "删除成功" : "删除失败"));
}

执行测试方法

  • 测试方法执行成功
  • 数据库成功删除用户信息

修改用户操作

实例理解

  • 此处我们想 根据 id 修改用户密码

初始化 UserMapper 接口

  • 此处我们在接口中添加一个 update 方法
  • 其返回值为 受影响行数
java 复制代码
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

//添加 @Mapper 注解 代表该接口会伴随这 项目的启动而注入到容器中
@Mapper
public interface UserMapper {

//    根据 id 修改用户密码
    Integer update(@Param("user_id") Integer id,
                   @Param("new_password") String newPassword);
}

初始化 UserMapper XML 文件

  • 在与 接口相对应的 XML 文件中
  • 添加上与 update 方法相对应的 sql 语句
XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">

    <update id="update">
        update user set password = #{new_password} where id = #{user_id};
    </update>

</mapper>

创建 update 的测试方法

  • 此处传入 id = 8
  • 新密码为 "1234"
java 复制代码
@Test
void update() {
    int result = userMapper.update(8,"1234");
    System.out.println("update 方法 :" + (result == 1 ? "修改成功" : "修改失败"));
}

执行测试方法

  • 测试方法执行成功
  • 数据库成功更改用户信息
相关推荐
Pniubi35 分钟前
HashMap的扩容和树化边界
java·开发语言
Mikko71 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师1 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.1 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼2 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
gCode Teacher 格码致知2 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工2 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留3 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu3 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
福兮说4 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json