Mybatis的CRUD使用详解

文章目录

  • 一.Mybatis的CRUD使用详解
    • 1.1 select
    • 1.2 insert
    • 1.3 update
    • 1.3 delete
    • 二.常见错误

一.Mybatis的CRUD使用详解

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

namespace(UserMapper.xml)

namespace中的包名需要和Dao/mapper接口的包名一致。

<!--nameSpace绑定一个对应的Dao接口-->
<mapper namespace="com.zhu.dao.UserMapper">

1.1 select

1.编写接口:

List<User> getUserList();

2.编写对应的mapper对应的sql语句:

选择、查询语句。

<select id="getUserList" resultType="com.zhu.pojo.User">
    select * from mybatis.user;
</select>
  • id:对应的nameSpace中的方法名。

  • resultType:Sql语句的返回值。

  • parameterType:参数类型。

3.测试类:

@Test
public void test(){
    //测试
    SqlSession sqlSession = Mybatisutils.getSqlSession();
    UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    List<User> userList = userDao.getUserList();
    for (User user : userList) {
        System.out.println(user);
    }
    sqlSession.close();
}

效果如下:

image-20230326003149778

1.编写接口:

    <select id="getUserById" parameterType="int" resultType="com.zhu.pojo.User">
        select * from mybatis.user where id = #{id};
    </select>

2.编写对应的mapper对应的sql语句:

更具id查询对应信息:

User getUserById(int id);

3.测试类:

@Test
public void getUserById(){
    SqlSession sqlSession = Mybatisutils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User userById = mapper.getUserById(1);
    System.out.println(userById);
    sqlSession.close();
}

效果如下:

image-20230326003214547

1.2 insert

1.编写接口:

int addUser(User user);

2.编写对应的mapper对应的sql语句:

增加:

    <insert id="addUser" parameterType="com.zhu.pojo.User" >
        insert into  mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
    </insert>

3.测试类:

    @Test
    public void addUser(){
        SqlSession sqlSession = Mybatisutils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int haha = mapper.addUser(new User(4, "haha", "32423"));
        if (haha>0){
            System.out.println("插入成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

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

效果如下:

image-20230326003331357

image-20230326003339818

1.3 update

1.编写接口:

int updateUser(User user);

2.编写对应的mapper对应的sql语句:

增加:

    <update id="updateUser" parameterType="com.zhu.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd}  where id = #{id};
    </update>

3.测试类:

    @Test
    public void updateUser(){
        SqlSession sqlSession = Mybatisutils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(4,"哈哈","4234"));
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

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

测试截图如下:

image-20230326003433735

1.3 delete

1.编写接口:

int daeleteUser(int id);

2.编写对应的mapper对应的sql语句:

增加:

    <delete id="daeleteUser" parameterType="com.zhu.pojo.User">
        delete from mybatis.user where id=#{id};
    </delete>

3.测试类:

    @Test
    public void deleteUser(){
        SqlSession sqlSession = Mybatisutils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.daeleteUser(4);
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

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

测试截图如下:

image-20230326003516863

二.常见错误

  • 标签不要匹配错
  • resource 绑定 mapper, 需要使用路径!
  • 程序配置文件必须符合规范!
  • NullPointerException, 没有注册到资源!
  • 输出的 xml 文件中存在中文乱码问题!
  • maven 资源没有导出问题!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4384.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读 10 | Instance Credibility Inference for Few-Shot Learning

小样本学习的实例可信度推理作者摘要1. Introduction2. Related Work作者 摘要 小样本学习&#xff08;FSL&#xff09;旨在识别每个类别极其有限的训练数据的新对象。以前的努力是通过利用元学习范式或数据增强中的新原理来缓解这个极其缺乏数据的问题。相比之下&#xff0c;本…

taro--之使用nutui组件库

安装 Taro 脚手架# 使用 npm 安装 CLI npm install -g tarojs/cli# 使用 yarn 安装 CLI yarn global add tarojs/cli# 使用 cnpm 安装 CLI cnpm install -g tarojs/cli使用 NutUI 模板创建项目1、使用命令创建 Taro 项目&#xff1a;taro init myApp2、按照下方图片依次选择&am…

ChatGPT如何批量撰写最新的热点自媒体文章

如何用ChatGPT创作高质量的自媒体文章 自媒体已成为互联网上的一个重要组成部分&#xff0c;无论您是想在社交媒体、博客中发布内容&#xff0c;高质量的文章都是自媒体成功的重要组成部分。ChatGPT是一个智能文章生成器&#xff0c;能够帮助创作者快速、高效地生成高质量的自…

数据结构——二叉搜索树

一、二叉搜索树概念 二叉搜索树又叫二叉排序树&#xff0c;它或是空树&#xff0c;或是具有以下性质的二叉树&#xff1a; &#xff08;1&#xff09;若它的左子树不为空&#xff0c;则左子树上的所有节点的值都小于根节点的值&#xff1b; &#xff08;2&#xff09;若它的…

LeetCode-718. 最长重复子数组

目录题目思路动态规划遇到的坑动态规划(优化)题目来源 718. 最长重复子数组 题目思路 用二维数组可以记录两个字符串的所有比较情况&#xff0c;这样就比较好推递推公式了。 动态规划 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]的定义也就决定…

【云原生】我将ChatGPT变成Kubernetes 和Helm 终端

{kubectl get po&#xff0c;deploy&#xff0c;svc}{kubectl run --imagenginx nginx-app --port80 --env“DOMAINcluster”}{kubectl expose deployment nginx-app --port80 --namenginx-http}{kubectl get po&#xff0c;svc&#xff0c;deploy}{curl 10.100.67.94:80}{helm…

Spring事务

目录 手动操作 声明式提交 注解的属性 事务隔离级别 事务传播机制 事务可以将一组操作封装成为一个单元&#xff0c;一组操作要么全部成功&#xff0c;要么全部失败 Mysql中操作事务&#xff0c;有三个步骤&#xff1b; 1、start transaction &#xff1b;开启事务 2、com…

springboot 整合Mybatis-Plus分页、自动填充功能

springboot 整合Mybatis-Plus分页、自动填充功能功能 此次分页、自动填充功能的实现是在Spring Boot整合 druid、Mybatis-plus实现的基础上完成的&#xff0c;包括数据源配置、各种依赖添加、mapper和service的实现。不在重复记录。 Java开发手册要求数据表必须要有三个字段&am…

【lwIP(第九章)】ICMP协议

目录一、ICMP协议简介1. ICMP协议类型与结构2. ICMP 差错报文3. ICMP 查询报文二、ICMP协议原理1. ICMP报文数据结构2. ICMP的差错报文3. 差错报文的原理4. ICMP的查询报文一、ICMP协议简介 ICMP协议是一个网络层协议。 一个新搭建好的网络&#xff0c;往往需要先进行一个简单的…

为什么说学人工智能一定要学Python?

学习人工智能需要掌握大量的数据处理和算法实现&#xff0c;而Python作为一种高级编程语言&#xff0c;具有简单易学、灵活多变、开源丰富的库等优点&#xff0c;成为了人工智能领域广泛应用的语言之一。 具体来说&#xff0c;Python在人工智能中的优势包括&#xff1a; ​​…

Matlab群体智能优化算法之巨型睡莲优化算法(VAO)

Matlab群体智能优化算法之巨型睡莲优化算法(VAO) 摘要&#xff1a;介绍一种新型智能优化算法&#xff0c;巨型睡莲优化算法。其应用于24个基准测试函数&#xff0c;并与其他10个著名算法进行了比较。提出的算法在10个优化问题上进行了测试&#xff1a;最小生成树、枢纽位置分配…

Nginx学习(9)—— 负载均衡模块

文章目录Nginx负载均衡模块负载均衡配置指令钩子初始化配置初始化请求peer.get和peer.free回调函数小结Nginx负载均衡模块 负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机&#xff0c;再使用upstream模块实现与这…

HTTP代理端口是什么意思?

HTTP代理端口是指代理服务器所使用的端口。代理服务器是一种介于客户端和服务器之间的计算机系统&#xff0c;它可以拦截客户端发送给服务器的请求&#xff0c;并将其转发到服务器。而HTTP代理端口则是代理服务器上专门用于处理HTTP请求和响应的端口号。默认情况下&#xff0c;…

【Java】JavaSE概要

整理&#xff1a;【狂神说Java】JavaSE阶段回顾总结_哔哩哔哩_bilibili JavaSE概要 简介 JDK&#xff1a;开发者工具包 JRE&#xff1a;运行环境 //Hello.java public class Hello{public static void main(String[] args){System.out.println("Hello,World!");} }…

Redis数据库

一、关系数据库与非关系型数据库概述 1、关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语…

Spring Boot基础学习之(六):前后端交互实现用户登录界面

本篇博客写的内容&#xff0c;是一个系列&#xff0c;内容都是关于spring boot架构的学习&#xff0c;实现前后端交互&#xff0c;极大的解放双手spring boot学习系列这是关于spring boot的专栏&#xff0c;后期也会不定期进行更新。内容都是有序号的&#xff0c;一步接着一步。…

有人物联口红DTU DR154配置与RS 485传感器数据处理

一、硬件设备 &#xff08;1&#xff09;有人物联口红DTU DR154&#xff08;RS 485版本&#xff09; 这个DTU非常给力&#xff0c;不用插卡自带esim卡&#xff0c;送8年流量&#xff0c;配置的话通过小程序【联博士】蓝牙配置&#xff08;手机扫描DTU背后的二维码即可&#x…

界面开发框架Qt新手入门教程 - 项目视图示例介绍

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。Qt提供了许多功能&…

java基础问答

57、synchronized 各种加锁场景的作用范围 1.作用于非静态方法&#xff0c;锁住的是对象实例&#xff08;this&#xff09;&#xff0c;每一个对象实例有一个锁。 public synchronized void method() {} 2.作用于静态方法&#xff0c;锁住的是类的Class对象&#xff0c;因为Cl…

chatgpt+安全机器人控制器+底盘一体化方案设计构想

“你有没有想过&#xff0c;你只需告诉你的家庭助理机器人&#xff1a;‘请加热我的午餐’&#xff0c;它就会自己找到微波炉。这是不是很神奇&#xff1f;” 近日&#xff0c;微软在其官网发表了一篇名为《机器人 ChatGPT&#xff1a;设计原则和模型能力&#xff08;ChatGPT …