当前位置: 首页 > article >正文

2023.11.27 关于 Mybatis 增删改操作

目录

引言

增加用户操作

删除用户操作

修改用户操作 


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

MyBatis 的创建与使用


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

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


引言

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

增加用户操作

实例理解

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

初始化 UserMapper 接口

  • 此处我们在接口中添加两个 add 方法
  • add方法 返回影响行数
  • add2方法 返回影响行数 和 自增 id 值
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 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 方法将其新增到数据库中
@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 方法将其新增到数据库中
@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 方法
  • 其返回值为 受影响行数
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 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
@Test
void delete() {
    int result = userMapper.delete(9);
    System.out.println("delete 方法:" + (result == 1 ? "删除成功" : "删除失败"));
}

执行测试方法

  • 测试方法执行成功

  • 数据库成功删除用户信息

修改用户操作 

  实例理解

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

初始化 UserMapper 接口

  • 此处我们在接口中添加一个 update 方法
  • 其返回值为 受影响行数
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 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"
@Test
void update() {
    int result = userMapper.update(8,"1234");
    System.out.println("update 方法 :" + (result == 1 ? "修改成功" : "修改失败"));
}

执行测试方法

  • 测试方法执行成功

  • 数据库成功更改用户信息


http://www.kler.cn/a/153094.html

相关文章:

  • informer 辅助笔记:main_informer.py
  • Elastic Search
  • 如何解决SSL证书部署后未生效或网站显示不安全
  • React实现登录授权功能
  • 智慧导诊系统的应用和实现技术分析
  • DM8数据库版本升级
  • 字节原来这么容易进,是面试官放水,还是公司实在是太缺人?
  • threejs教程
  • 对外汉语教师简历(精选12篇)
  • 【动态规划】LeetCode-面试题08.01三步问题
  • Ubuntu镜像与K8S冲突,容器持续Terminating
  • 从公务员考试中学诗词:东边日出西边雨,道是无晴却有晴
  • AdWords 广告字符的限制是多少?
  • 自定义函数中的(int*a,int*b)与(int*a,int n)
  • String类 ---java
  • 高清动态壁纸软件Live Wallpaper Themes 4K mac中文版功能
  • matlab基于线性二次调节器(LQR)法实现机器人路径规划可变轨迹跟踪
  • Java面向对象第十天
  • HarmonyOs 4 (三) ArkTS语言
  • 机器学习(2)回归