IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Mybatis基础学习之CRUD增删改查 -> 正文阅读

[Java知识库]Mybatis基础学习之CRUD增删改查

前言

小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。

这个Mybatis基础学习系列是用来记录我学习Mybatis框架基础知识的全过程 (这个系列是参照B站狂神的Mybatis最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)
之后我将会以一天一更的速度更新这个系列,还没有学习Mybatis3框架的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。
最后,希望能够和大家一同进步吧!加油吧!少年们!

废话不多说,让我们开始今天的学习内容吧。今天我们来到了Mybatis基础学习的第三站:CRUD增删改查

特别提醒:由于今天的学习内容基于上一期第一个Mybatis程序的,如果还没有看过上篇博客的小伙伴,建议看完上期再继续学习本期,下面是上篇博客的地址链接:https://blog.csdn.net/weixin_45301250/article/details/120837115)

4. CRUD增删改查

4.1 查询用户信息

选择,查询语句

  • id就是对应namespace中的方法名
  • resultTypeSQL语句执行的返回值
  • parameterMap参数类型

4.1.1 编写UserMapper接口

public interface UserMapper {
    
    // 根据Id查询用户
    User getUserById(int id);
    
}

4.1.2 编写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">
<!-- namespace中的包名要和Dao/Mapper接口的包名一致 -->
<mapper namespace="com.kuang.dao.UserMapper">
    
    <!-- 通过id查询指定用户 -->
    <select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
        select * from mybatis.user where id = #{id}
    </select>
    
</mapper>

4.1.3 方法单元测试

1. 编写UserMapperTest测试类

public class UserMapperTest {   
    
    @Test
    public void getUserById() {
        // 获得SqlSession对象
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        // 使用getMapper方法获取接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用getUserById方法查询指定用户
        User user = mapper.getUserById(1);
        // 打印用户信息
        System.out.println(user);
        // 关闭sqlSession
        sqlSession.close();
    }
    
}

2. 测试结果

在这里插入图片描述

结果查询指定用户信息成功!

4.2 插入用户信息

4.2.1 编写UserMapper接口方法

public interface UserMapper {
    
    // 插入用户信息
    int addUser(User user);
    
}

4.2.2 编写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">
<!-- namespace中的包名要和Dao/Mapper接口的包名一致 -->
<mapper namespace="com.kuang.dao.UserMapper">
    
    <!-- 插入用户信息
         对象中的属性,可以直接取出来 -->
    <insert id="addUser" parameterType="com.kuang.pojo.User">
        insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd});
    </insert>
    
</mapper>

4.2.3 方法单元测试

1. 编写UserMapperTest测试类

public class UserMapperTest {   
    
    @Test
    public void addUser() {
        // 获得SqlSession对象
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        // 使用getMapper方法获得接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用addUser方法插入用户
        int result = mapper.addUser(new User(4,"钟兴民","zxm123456"));
        // 判断结果是否大于0
        if(result > 0) { 
            System.out.println("插入成功!");
        }
        // 提交事务,如果不提交事务则会插入不进去数据
        sqlSession.commit();
        // 关闭sqlSession
        sqlSession.close();
    }  
    
}

2. 测试结果

在这里插入图片描述

结果插入用户信息成功!

4.3 修改用户信息

4.3.1 编写UserMapper接口

public interface UserMapper {
    
    // 修改用户信息
    int updateUser(User user);
    
}

4.3.2 编写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">
<!-- namespace中的包名要和Dao/Mapper接口的包名一致 -->
<mapper namespace="com.kuang.dao.UserMapper">
    
    <!-- 修改用户信息 -->
    <update id="updateUser" parameterType="com.kuang.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id};
    </update>
    
</mapper>

4.3.3 方法单元测试

1. 编写UserMapperTest测试类

public class UserMapperTest {   
    
    @Test
    public void updateUser() {
        // 获取SqlSession
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        // 获取接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用updateUser方法
        mapper.updateUser(new User(4,"黄雨勋","hyx123456"));
        // 提交事务
        sqlSession.commit();
        // 关闭sqlSession
        sqlSession.close();
    }
    
}

2. 测试结果

在这里插入图片描述
结果修改用户信息成功!

4.4 Delete删除

4.4.1 编写UserMapper接口

public interface UserMapper {
    
    // 删除用户信息
    int deleteUser(int id);
    
}

4.4.2 编写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">
<!-- namespace中的包名要和Dao/Mapper接口的包名一致 -->
<mapper namespace="com.kuang.dao.UserMapper">
    
    <!-- 删除用户信息 -->
   <delete id="deleteUser" parameterType="com.kuang.pojo.User">
        delete from mybatis.user where id = #{id};
    </delete>
    
</mapper>

4.4.3 方法单元测试

1. 编写UserMapperTest测试类

public class UserMapperTest {   
    
    @Test
    public void deleteUser() {
        // 获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        // 获取接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 调用deleteUser方法
         mapper.deleteUser(4);
        // 提交事务
        sqlSession.commit();
        // 关闭sqlSession
        sqlSession.close();
    }
    
}

2. 测试结果

在这里插入图片描述

结果删除用户信息成功!

注意:增删改需要提交事务!

4.5 分析错误

1. 标签不匹配

  • 例如insert标签里的sql语句是select语句
 <insert id="addUser" parameterType="com.kuang.pojo.User">
       insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd})
 </insert>

2.resource路径错误

  • resource绑定mapper,需要使用路径!要写成 resource=“com/kuang/dao/UserMapper.xml”,而不是resource=“com.kuang.dao.UserMapper.xml
 <!-- 每一个Mapper.xml都需要再Mybatis核心配置文件中注册 -->
    <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
    </mappers>

3.程序配置文件出错

程序配置文件必须符合规范!

注意读错要从后往前读!

4.空指针异常

  • 发生错误java.lang.NullPointException

在这里插入图片描述

  • 报错原因

在这里插入图片描述

重复定义sqlSessionFactory,没有注册到资源,导致引发空指针异常

5.xml文件中文乱码

  • 输出的xml文件中存在中文乱码问题!

6. maven资源未导出

  • 在build中配置resources,来防止我们资源导出失败的问题!
   <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
               <!--需要把filtering改为false-->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

好了,今天的有关CRUD增删改查的学习就到此结束啦,欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连,我们下期见,拜拜啦!


参考视频链接:https://www.bilibili.com/video/BV1NE411Q7Nx?spm_id_from=333.999.0.0(【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 10:49:50  更:2021-10-22 10:51:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:11:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码