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

【MyBatis框架】实现增删改查功能

CSDN话题挑战赛第2期
参赛话题:学习笔记

目录

      • 1. MyBatis流程回顾
      • 2. 工具类的构建
      • 3. 相关各类配置
      • 4. 增加数据功能
      • 5. 删除数据功能
      • 6. 修改数据功能
      • 7. 查询数据功能

1. MyBatis流程回顾

上一篇中我们已经了解了MyBatis框架的基本实现,现在先来回顾一下其实现流程

在这里插入图片描述

2. 工具类的构建

观察上述步骤,我们发现每次都需要通过SqlSessionFactoryBuilder构建SqlSessionFactory然后再获得SqlSession对象,这些步骤都是相同的,我们可以把它们封装成为一个工具类MybatisUtils

在这里插入图片描述

package com.zxy.mybatis.Utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    public static SqlSession getSqlSession() throws IOException {
        //读取MyBatis的核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new
                SqlSessionFactoryBuilder();
        //通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //创建SqlSession对象,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务
        //SqlSession sqlSession = sqlSessionFactory.openSession();
        //创建SqlSession对象,此时通过SqlSession对象所操作的sql都会自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        return sqlSession;
    }
}

3. 相关各类配置

  1. 实体类User
package com.zxy.mybatis.pojo;

public class User {
    private Integer id;
    private String username;
    private String psd;
    private Integer age;
    private String gender;
    private String email;

    public User() {
    }

    public User(Integer id, String username, String psd, Integer age, String gender, String email) {
        this.id = id;
        this.username = username;
        this.psd= psd;
        this.age = age;
        this.gender = gender;
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", psd='" + psd+ '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", email='" + email + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPsd() {
        return psd;
    }

    public void setPsd(String psd) {
        this.psd= psd;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

  1. UserMapper
package com.zxy.mybatis.mapper;

import com.zxy.mybatis.pojo.User;

import java.util.List;

public interface UserMapper {
    /**
     * 添加用户信息
     */
    int insertUser();
    int deleteUser();
    int updateUser();
    User getUserById();

}

  1. UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zxy.mybatis.mapper.UserMapper">
    <!--int insertUser();-->
    <insert id="insertUser">
        insert into t_user values(null,'bobo','123456',23,'男','12345@qq.com')
    </insert>
    <!--int deleteUser();-->
    <delete id="deleteUser" >
        delete from t_user where id = 1
    </delete>
    <!--int updateUser();-->
    <update id="updateUser" >
        update t_user set username='zxy',password='123' where id = 6
    </update>
    <!--User getUserById();-->
    <select id="getUserById" resultType="com.zxy.mybatis.pojo.User">
        select * from t_user where id = 1
    </select>
</mapper>

4. 增加数据功能

首先在UserMapper中写入方法

在这里插入图片描述

int insertUser();

配置Mapper接口

在这里插入图片描述

 <!--int insertUser();-->
    <insert id="insertUser">
        insert into t_user values(null,'bobo','123456',23,'男','12345@qq.com')
    </insert>

执行方法测试
在这里插入图片描述

查看结果

在这里插入图片描述

返回值表明已经成功,我们查看数据库进一步确认

在这里插入图片描述

加入成功

5. 删除数据功能

首先在UserMapper中写入方法

在这里插入图片描述

配置Mapper接口
在这里插入图片描述

 <!--int deleteUser();-->
    <delete id="deleteUser" >
        delete from t_user where id = 9
    </delete>

执行方法测试

在这里插入图片描述

结果如下

在这里插入图片描述

查看数据库是否成功

在这里插入图片描述

可以发现id为9的已经被删除

6. 修改数据功能

首先在UserMapper中写入方法

在这里插入图片描述

配置UserMapper

在这里插入图片描述

 <!--int updateUser();-->
    <update id="updateUser" >
        update t_user set username='zxy',password='123' where id = 7
    </update>

执行方法测试

在这里插入图片描述

结果如下

在这里插入图片描述

查看数据库
在这里插入图片描述

id为6的那个数据确实已经发生改变

7. 查询数据功能

首先在UserMapper中写入方法

在这里插入图片描述

配置UserMapper

在这里插入图片描述

<!--User getUserById();-->
    <select id="getUserById" resultType="com.zxy.mybatis.pojo.User">
        select * from t_user where id = 7
    </select>

执行方法测试

在这里插入图片描述

结果如下,表明查询成功
在这里插入图片描述

相关文章:

  • 【算法刷题日记之本手篇】左右最值最大差与顺时针打印矩阵
  • Redis 的安装
  • Netty网络编程实战2,使用Netty开发聊天室功能
  • 一文搞懂CAN总线协议帧格式
  • 使用MATLAB控制笔记本电脑的摄像头,并进行实时人脸检测和识别
  • 微信小程序|基于小程序实现透明背景人像分割
  • React中编写CSS的常见方案
  • 利用HFS软件一分钟搭建好ESP8266基于Arduino开发环境
  • MongoDB必备知识点全面总结
  • 【Linux操作系统】进程详解(下)
  • three.js入门 1 介绍和基础代码
  • pytorch-实现天气识别
  • Unity2D学习———角色移动两种方式+小怪追随+Unity演示+C#代码
  • 拓展上机-3题解:哥德巴赫猜想
  • 如果你看不懂别人画的 UML 类图,看这一篇文章就够了
  • 【译】JS基础算法脚本:字符串结尾
  • C语言笔记(第一章:C语言编程)
  • Github访问慢解决办法
  • Java编程基础24——递归练习
  • JS基础之数据类型、对象、原型、原型链、继承
  • js面向对象
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • npx命令介绍
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于 Cirru Editor 存储格式
  • 观察者模式实现非直接耦合
  • 删除表内多余的重复数据
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #laravel 通过手动安装依赖PHPExcel#
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (六)vue-router+UI组件库
  • (七)Knockout 创建自定义绑定
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (学习日记)2024.01.19
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)为C# Windows服务添加安装程序
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET Framework杂记
  • .net Stream篇(六)
  • .NET单元测试
  • .net反编译工具
  • @ConfigurationProperties注解对数据的自动封装
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [APIO2015]巴厘岛的雕塑
  • [C++]18:set和map的使用
  • [C++]——带你学习类和对象
  • [C++随笔录] 红黑树