mybatis的CRUD操作

MyBatis CRUD操作详解与常见问题解决 本文详细介绍了 MyBatis 框架中常用的 CRUD 操作,并提供了每个操作的完整实现步骤和代码示例。通过编写接口、Mapper 文件以及测试类,读者可以快速掌握 MyBatis 的基本用法。查询操作(select):通过@Select注解和SqlSession,实现了从数据库中查询数据的操作,包括通过id获取特定用户的详细信息。插入操作(insert):通过@Insert注解与 SQL 映射文件,完成了向数据库插入新数据的功能。特别注意,插入操作需要手动提交事务。更新操作(update):通过。 阅读详情

mybatis的CRUD操作:
        1.定义接口方法:
            总结:增加、修改、删除方法返回值类型一般为int;
                  两种查询方法:查询所有--返回值类型为实体对象的集合类型
                                按条件查询--返回值类型为实体类型
                List<User> findAll();
                User findById(Integer id);
                int addUser(User user);
                int deleteUser(Integer id);
                int updateUser(User user);
        2.配置mapper.xml映射文件
            增删改查标签:<select> <insert> <update> <delete>
                id属性:值为接口的方法名
                resultType属性:指定返回值的类型
                动态参数的获取:#{参数名} (参数名一般和实体类的属性名相同)
            单表查询事例:     

  <select id="findById" resultType="com.mybatis.model.User">
                    select * from user where id=#{id}
                </select>

<!-- 增加一个用户 -->
              

  <insert id="addUser">
                    insert into user(name,sex,username,pwd,tel)  
                    values(#{name},#{sex},#{username},#{pwd},#{tel})
                </insert>
   <!--  根据id删除一个用户 -->
                <delete id="dropUser" parameterType="Integer">
                    delete from user where id=#{id}
                </delete>

 <!-- 根据id修改用户 -->
                <update id="updateUser">
                    update user set name=#{name},sex=#{sex},username=#{username},pwd=#{pwd},tel=#{tel} 
                    where id=#{id}
                </update>

多表查询事例:
    

            <!-- 根据用户id查询订单的详细信息 -->
                <select id="findOrdersByUserId" resultType="com.mybatis.model.Orders">
                    SELECT orders.ordername,orders.ordermoney,orders.orderdate,orders.ordernum 
                    FROM orders 
                    JOIN user   
                    ON orders.orderuser=user.id 
                    WHERE user.id=#{id} 
                </select>
              <!-- 查询包含用户名的订单的详细信息 -->
                <select id="findOrdersAllInfo" resultType="com.mybatis.model.Orders">
                    SELECT orders.ordername,orders.ordermoney,
                        orders.orderdate,orders.ordernum,user.name as 'user.name' 
                    FROM orders 
                    JOIN user 
                    ON orders.orderuser=user.id
                </select>

3.测试类中读取mybatis-config.xml配置文件,步骤如上:结构测试
    映射器方法多参数传递:(重点)
        使用场景:
            当我们执行crud操作的时候需要多个条件才能完成,这个时候我们需要传递多个参数;
        方式一:直接传递多个参数
            1.在接口类中定义多个参数的接口方法;
                参数个数:一般为2到4个参数,常见的为2个
                栗子:User findByNameAndSex(String name,String sex);
            2.配置映射文件:
                传入的动态参数必须使用mybatis内部提供的名称;分别为arg0,arg1,param1,param2

                栗子:<!-- 查询出名字叫“郭靖”的男用户 -->
                    <select id="findByNameAndSex" resultType="com.mybatis.model.User">
                        SELECT * from `user` WHERE `name`=#{arg0} AND sex=#{arg1}
                    </select>

  注意:Mybatis映射器XML对于多个参数,默认情况下只识别arg0、arg1、paraml和param2这种内部定义的名称,
        所以将参数名定义为#{arg0}和#{arg1}或者#{param1}和#{param2}即可解决错误

错误提示:当出现多个参数传递的时候,我们只能按照mybatis内部给我们定义的名称,
其他的自定义名称都会报错;
        报错方式如下:
            ### Error querying database.  
            Cause: org.apache.ibatis.binding.BindingException: 
            Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]

        方式二:使用map集合传递多个参数
            1.在接口类中定义map参数的接口
                栗子:User findByNameAndSex1(Map<String, Object> map);
            2.配置映射文件:
                动态SQL的参数名字必须和map集合的key键的名称相同;如果名称不匹配,则传递参数无法获取

                核心代码:
                    Map<String, Object> map=new HashMap<String, Object>();
                    map.put("name", "郭靖");
                    map.put("sex", "男");

                    <!-- 查询出名字叫“郭靖”的男用户 -->
                    <select id="findByNameAndSex1" resultType="com.mybatis.model.User">
                        SELECT * from `user` WHERE `name`=#{name} AND sex=#{sex}
                    </select>

#使用注解的方式执行mybatis的crud操作:(了解)
        使用:
            1. 在接口方法上添加crud的注解:@select,@insert,@update,@delete;
                并在注解括号中编写SQL语句,SQL语句和映射配置文件的SQL写法一样

               栗子:
                    @Select("select * from user")
                    List<User> findAllAnnotaion();
                    
                    @Select("select * from user where id=#{id}")
                    User findById(Integer id);

 2. 在mybatis的配置文件中配置接口类路径的映射;
                配置位置:

                    <mappers>
                        <mapper class="com.mybatis.mapper.UserMapper2"/>
                    </mappers>

常见错误:无法在mybatis的配置文件中找到接口类

            org.apache.ibatis.binding.BindingException: Type interface com.mybatis.mapper.UserMapper2 is not known to the MapperRegistry.

解决方法:
            在mybatis的配置文件的<mappers>标签中添加接口类的全限定路径:com.mybatis.mapper.UserMapper2
            并且<mapper>中的属性为class,用.隔开。
       1.重新搭建mybatis框架
       2.mybatis配置文件中使用取别名配置
                作用:为全限定类名重新配置一个简单的名字,方便后面的引用,减少代码的冗余
                用法:
                    <!-- 配置全局类型的简写别名 -->

           <typeAliases>
                        <typeAlias type="com.mybatis.model.User" alias="user"/>
                        <typeAlias type="com.mybatis.model.Orders" alias="orders"/>
                    </typeAliases>

3.数据源的三种参数配置
                UNPOOLED:这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,
                    但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。
                    性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形
                    
                POOLED(重点):这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,
                    避免了创建新的连接实例时所必需的初始化和认证时间。 
                    这种处理方式很流行,能使并发 Web 应用快速响应请求。
                    
                JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,
                    容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
                    
            4.开启驼峰命名映射:mapUnderscoreToCamelCase
                用在哪:当数据库的字段名和实体类属性名不相同,并且命名没有按照驼峰命名规则;
                    <settings>
                        <setting name="mapUnderscoreToCamelCase" value="true"/>
                    </settings>
                value值:
                    true:开启驼峰命名映射
                    false: 不开启驼峰命名映射
                注意:该配置需要放在第一位,否则报错。

MyBatis CRUD 操作详解及实战案例 本文还有配套的精品资源,点击获取 简介:MyBatis作为一个轻量级持久层框架,以其灵活性和高效性而受到开发者的青睐。本文深入探讨了MyBatis在数据库操作中的增删改查(CRUD)实现方式,并通过 movies.sql 数据库文件及MyBatis应用实例,提供了全面的实践指南。文章通过实例展示了如何通过XML配置或Java注解实现CRUD操作,并解释了与之相... 阅读详情

相关推荐

手把手带你搞懂电压跌落测试DIP

砖一用4分钟时间手把手带你搞懂电压跌落测试DIP,希望对你有用~

qq_45508321的博客 7918

Mybatis基本使用之CRUD

SSM框架中mybatis下的CRUD

m0_63078058的博客 1041

银河麒麟v10装Docker实战:在线离线安装与容器部署指南

容器技术作为现代软件交付的核心方式,通过将应用与依赖打包成镜像,实现了环境的一致性与快速部署。Docker作为最流行的容器引擎,其安装与配置是上云和国产化转型中的基础技能。在国产操作系统银河麒麟v10环境中,由于系统兼容性和网络环境的差异,Docker的部署需要特别注意在线与离线两种模式的选择。本文从基础概念出发,结合麒麟v10的实际环境,详细梳理了Docker引擎的安装、镜像加速、存储配置以及MySQL、Redis等常用容器的部署方法,并针对SELinux、cgroup驱动等常见问题给出了解决方案,帮助开

weixin_30431445的博客 145

MyBatis - CRUD操作

文章目录1.1、CRUD 指的是?1.2、搭建环境1.2.1、搭建数据库环境1.2.2、搭建项目环境1.3、编写代码1.3.1、编写Mybatis配置1.3.2、编写工具类1.3.3、编写实体类1.3.4、编写Mapper接口1.3.5、编写Mapper.xml文件1.4、测试1.4.1、在 pom.xml 加入以下代码1.4.2、搭建测试环境 1.1、CRUD 指的是? C – Create ...

星期八领证的博客 322

合成孔径雷达(SAR)的常见工作模式

随着星载SAR技术研究的深入发展,单一的条带模式已经无法满足当今时代的需求,因此许多新的工作模式相继被提出。这些新模式在分辨率和测绘宽度等方面都有所提高,接下来将简要介绍几种常用的工作模式。

m0_51390495的博客 2315

数字电路复位信号设计(异步复位、同步释放)笔记详解

复位信号设计(异步复位、同步释放)笔记详解 1 时序设计 1.1 复位信号设计(异步复位、同步释放) 1.1.0 复位恢复时间和清除时间 首先解释一下恢复时间(recovery time)和清除时间(removal time):(以复位信号低电平有效为例) 复位恢复时间(recovery time):撤销复位时,复位信号无效到时钟有效沿来临之间需要维持的最小的时间,类似于同步时钟的建立时间setup time; 复位清除时间(removal time):复位时,在时钟有效沿来临之后复位信号还需要保持复位

weixin_42294124的博客 1万+

使用mybatis实现CRUD(超详细)

首先我们先取一个项目: 数据库表(tb_brand)及数据准备: 实体类 Brand: 安装 MyBatisX 插件: MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。主要功能: XML映射配置文件 和 接口方法 间相互跳转。 根据接口方法生成 statement。在没有MybatisX前,因为接口方法要跟XML文件中的select标签中的id要对应,因此会在XML文件和接口中来回切换,观察是否对应。安装了MybatisX后就解决了这一问题。 插件效果: 红色头绳的表示映射配置文件,

ZJRUIII的博客 5204

【STM32】BLDC驱动&控制开发笔记 | 07_SPI通信测试 - STM32F407用SPI配置DRV8323驱动芯片

使用STM32F407的SPI通信功能配置DRV8323S驱动芯片的详细过程说明。

这里是 F菌的进阶之路。 6289

MyBatis的CRUD操作

crud是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

Pursuit_li的博客 494

【WorkBuddy从入门到精通实战教程】使用手册 第 2 章 WorkBuddy的下载、安装、登录与更新

摘要:WorkBuddy官方下载地址为https://www.codebuddy.cn/work/,支持Mac和Windows系统,需根据设备自动匹配版本。安装时需核对发布者信息,Mac用户需拖入应用程序文件夹。登录支持微信扫码或手机号,公司电脑安装需IT授权。更新通过个人中心检查,遇到安装包损坏、登录失败或文件读写问题时,建议重新下载、检查网络/权限或联系官方支持。重要文件建议定期备份,避免直接操作原文件。(149字)

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 1864

深入解析雪球网股票行情数据爬取:基于WebSocket与API的实时数据获取技术实践

本文详细介绍了如何使用Python爬虫技术获取雪球网的股票行情数据,涵盖了WebSocket实时数据连接和RESTful API接口调用两种主要技术方案。完整的WebSocket客户端,支持实时行情订阅和数据处理功能丰富的API客户端,支持多种数据类型的获取数据存储和管理系统,使用SQLite进行数据持久化实时监控和预警系统,支持自定义预警规则技术指标计算,提供基本的数据分析功能。

2201_76125261的博客 1255

MyBatis CRUD操作终极指南 → MyBatis CRUD 操作详解(完整版手册)→ MyBatis CRUD 项目参考

《MyBatis CRUD操作完全手册》摘要: 本手册系统讲解MyBatis的增删改查操作,包含核心概念(SqlSessionFactory、Mapper映射)、四种基础操作(查询/插入/更新/删除)的完整写法和接口简写方式,重点覆盖动态SQL、参数传递、事务管理和性能优化。特别说明#{}与${}的安全差异,提供自增主键获取、批量操作、逻辑删除等实战方案,并附SpringBoot整合示例(含目录结构、实体类、Mapper接口/XML、Service层及事务控制)。注意事项强调SQL注入防护、条件限制避免全表

DeppBing的博客,全栈修炼记|记录一个开发者的进化轨迹 1305

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 827

使用Mybatis进行CRUD操作

MyBatis基于代理Dao的CRUD操作 一、环境及文件的搭建 1、创建Maven项目,导入坐标 <groupId>org.example</groupId> <artifactId>mybatis_crud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependenc

weixin_41515594的博客 201

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Mybatis实现CRUD操作

项目实现的功能 查询所有用户信息 通过Id查询用户信息 添加用户(回显主键) 修改用户信息 删除用户信息 通过用户名字模糊查询 一、引入依赖和工程结构 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http...

L-李俊漩的博客 361

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

MyBatis-CRUD操作

基于MAVEN创建MyBatis项目的方法参考:MyBatis初识+创建项目 CRUD操作 crud是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。 CRUD 注意几点:???? SQL语句返回值类型。【完整的类名或者别名】 传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】 命名空间中唯一的标识符 接口中的方法名与映射文件中的SQL语句ID

weixin_47243236的博客 294

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SpringBoot整合Mybatis进行crud操作

SpringBoot整合Mybatis进行crud操作。

qq_38930254的博客 1033

【MyBatis】使⽤MyBatis完成CRUD操作

MyBatis是一个流行的Java持久层框架,它允许开发者以简洁、直观的方式与数据库进行交互。本文将详细介绍如何使用MyBatis完成CRUD(创建、读取、更新、删除)操作,包括详细的配置和代码实现,帮助你更好地理解和应用这个框架。

wasd2051678946的博客 1065

Mybatis——CRUD操作

目录查询查询测试添加添加测试更新更新测试删除删除测试创建SqlMapConfig.xml数据库连接创建配置查询的映射文件Channel.xml 查询 <select id="findAll" resultType="edu.xalead.Channel"> select * from t_channel </select> 查询测试 public class MybatisTest { /** * 创建mybatis工厂 */ Sql

qq_43413774的博客 394

MyBatis CRUD标签:核心操作解析

在当今的软件开发领域,MyBatis 作为一款优秀的持久层框架,被广泛应用于各种项目中。尤其是在处理数据库操作时,CRUD(Create、Read、Update、Delete)操作是任何应用程序都不可或缺的部分。想象一下,一个电商网站在处理用户订单时,需要不断地创建新订单、读取订单信息、更新订单状态以及删除无效订单。如果没有高效的CRUD操作,那么整个网站的数据管理将变得异常复杂和低效。在这样的背景下,MyBatis的CRUD标签就成为了简化数据库操作、提高开发效率的关键。

JavaCodePro的博客 613

Mybatis动态sql实现CRUD操作

insert插入也可以使用之前的机制在配置文件中直接编写sql,但是insert语句的参数和值的列表,需要拼接哪些字段是根据传入的值决定,此时可以通过Mybatis提供的标签来实现判断,动态的拼接insert语句。是根据传入的值决定的,此时通过Mybatis提供的标签来实现判断,动态的拼接update语句。传入的值决定的,此时可以通过Mybatis提供的标签实现判断,动态的去拼接select语句,而不是按照每次传入的条件参数。不同而去分情况写一堆的sql。(1)select动态sql。

qq_65142821的博客 1115

05-MyBatis的CRUD操作(单表操作)

MyBatis的CRUD操作(单表操作)

qq_61951462的博客 781

Mybatis方式完成CRUD操作

Java开发在以前做数据库连接的时候通过JDBC来完成,非常麻烦。

令狐_JackieHao的博客 2125

使用MyBatis实现CRUD操作

MyBatis1.使用MyBatis实现CRUD操作1.1 根据id查询信息1.2 实现存入用户信息1.3 更新用户信息1.4 删除用户信息1.5 模糊查询1.6 #{}和${}的区别2. MyBatis较JDBC的优势 1.使用MyBatis实现CRUD操作     CRUD:CRUD是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。     CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能。 1.1 根据i

weixin_44191224的博客 1054
上一篇: 使用bootstrap框架做一个Aotm Blog个人博客
下一篇: mybatis的高级映射
Jarvis!
博客等级 码龄6年 822粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值