mybatis学习总结(二)之配置文件实现crud操作

Springboot整合Mybatis实现级联一对多CRUD操作 在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能。关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Mybatis并完成CRUD操作,这是本文操作的基础。本文先准备一个测试的数据库,然后使用MyBatis Generator进行部分代码自动生成,再以一个例子来展示稍微高级点的操作:使用Mybatis完成级... 阅读详情

一、使用MyBatis对表执行CRUD操作——基于XML的实现
1.sql映射xml文件

<!DOCTYPE mapper   
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理是,它具有特殊重要的作用 -->
<mapper namespace="test" >
   <!-- 根据用户ID查询用户信息 -->
   <!-- select:表示一个mappedStatement对象 -->
   <!-- id:statement的唯一标识 -->
   <!-- #{}:标识一个占位符? -->
   <!-- #{id}:里面的id表示输入的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
   <!-- parameterType:输入参数得java类型 -->
   <!-- resultType:输出结果的所映射的Java类型(单条记录所对应的java类型) -->
   <select id="findUserById" parameterType="int" resultType="me.mybatis.po.User">
      select * from user where id=#{id}
   </select>
   <!-- 根据用户名称模糊查询用户列表 -->
   <!-- ${}:表示一个sql的连接符 -->
   <!-- ${value}:里面的value表示输入参数的参数名称,如果该参数是简单类型,那么${}里面的参数名称必须是value -->
   <!-- ${}这用写法存在sql注入的风险,所以要谨慎使用,但是在一些场景下,必须要使用${},比如排序时,动态传入排序的列名,${}会不加解释 -->
   <select id="findUserByName" parameterType="java.lang.String" resultType="me.mybatis.po.User">
      select * from user where username like '%${value}%'
   </select>
   <!-- 添加用户信息 -->
   <insert id="insertUser" parameterType="me.mybatis.po.User" >
     <selectKey keyProperty="id" resultType="int" order="AFTER">
       select LAST_INSERT_ID()
     </selectKey> 
     insert into user(username,birthday,sex,address)values(#{username},#{birthday},#{sex},#{address})
   </insert>
   
   <!-- 添加用户信息 -->
   <!-- 主键返回之自增主键 -->
   <!-- selectKey:查询主键,在标签内需要输入查询主键的SQL -->
   <!-- order:指定查询主键的sql和insert语句的执行顺序,相当于insert语句来说 -->
   <!-- LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的id,它必须配合insert语句一起使用 -->
   <insert id="insertUser2" parameterType="me.mybatis.po.User" >
   <selectKey keyProperty="id" resultType="int" order="AFTER">
       select LAST_INSERT_ID()
     </selectKey>
     insert into user(username,birthday,sex,address)values(#{username},#{birthday},#{sex},#{address})
   </insert>
   
   
   <!-- 自增主键之UUID -->
   <insert id="insertUser3" parameterType="me.mybatis.po.User" >
   <!-- 当主键不是自增时,此时要获取id需要先通过数据库查询UUID,赋值给id属性,然后在进行插入操作,因此selectkey的order属性应为before -->
   <selectKey keyProperty="id" resultType="String" order="BEFORE">
       select UUID()
     </selectKey>
     insert into user(id,username,birthday,sex,address)values(#{id},#{username},#{birthday},#{sex},#{address})
   </insert>
   
   <!-- 删除操作 -->
   <delete id="deleteUser" parameterType="java.lang.Integer" >
     delete from user where id=#{id}
   </delete>
   <!-- 更新操作 -->
   <update id="updateById" parameterType="me.mybatis.po.User">
     <selectKey keyProperty="id" resultType="int" order="AFTER">
        select last_insert_ID()
     </selectKey>
     update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
   </update>
</mapper>

2.测试代码

package me.mybatis.test;
import java.io.InputStream;
import java.util.Date;

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 org.junit.Before;
import org.junit.Test;

import me.mybatis.po.User;

public class test01 {
    private SqlSessionFactory sqlSessionFactory;
	@Before
	public void setUp() throws Exception {
		//取出配置文件
		//全局配置文件的路径
		String resource="SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建sqlsession工厂
	    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void test() {
		//得到SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//调用映射mapper的id为finUserById的select
		//第一个参数:表示statement的唯一表示namespace.id,第二个参数表示传入参数
		User user = sqlSession.selectOne("test.findUserById",1);
		System.out.println(user);
		sqlSession.close();
	}
	//进行添加测试
	@Test
	public void testinsert() {
		 SqlSession sqlSession = sqlSessionFactory.openSession();
		   
		   User user = new User();
		   user.setUsername("小明明");
		   user.setAddress("上海");
		   //调用SqlSession的增删改查方法
		   //第一个参数表示statement的唯一标识,第二个参数表示值
		   int result = sqlSession.insert("test.insertUser", user);
		   System.out.println("返回主键为:"+user.getId());
		   sqlSession.commit();
		   System.out.println("操作成功"+result);
		   
		   //关闭资源
		   sqlSession.close();
	}
     //修改测试
	@Test
	public void testUpdate() {	   
		   //创建SQLSession
		   SqlSession sqlSession = sqlSessionFactory.openSession();
		   
		   User user = new User();
		   user.setId(38);
		   user.setUsername("小明");
		   user.setBirthday(new Date());
		   user.setSex("2");
		   user.setAddress("北京");
		   //调用SqlSession的增删改查方法
		   //第一个参数表示statement的唯一标识,第二个参数表示值
		   int result = sqlSession.update("test.updateById",user);
		   sqlSession.commit();
		   System.out.println("操作成功"+result);
		   
		   //关闭资源
		   sqlSession.close();
	}
	//删除测试
	@Test
	public void testDelete(){
		 SqlSession sqlSession = sqlSessionFactory.openSession();
		   //调用SqlSession的增删改查方法
		   //第一个参数表示statement的唯一标识,第二个参数表示值
		   int result = sqlSession.delete("test.deleteUser", 35);
		   sqlSession.commit();
		   System.out.println("操作成功"+result);
		   
		   //关闭资源
		   sqlSession.close();
	}
}
Spring MVC整合mybatis实现CRUD操作 SpringMVC是一个基于Java的轻量级Web开发框架。它非常适用于构建Web应用。在Web应用中,一般会用到数据交互,如读取、修改、添加、删除等功能。常用的技术是RESTful API,而 MyBatis 是 Java 持久层框架,它可以将数据库中的记录转化成 Java 对象,并对对象进行crud操作。因此本文将详细介绍如何结合SpringMVC和MyBatis,完成CRUD(create、read、update、delete)操作。 阅读详情

相关推荐

SpringBoot与Mybatis整合实现CRUD操作实战

Maven的项目对象模型(Project Object Model,POM)是一个XML文件,它包含了项目的配置信息。POM文件位于项目的根目录下,通常命名为pom.xml。在这个文件中,开发者可以定义项目的组成元素,如编译源代码、运行单元测试、打包应用等。POM文件中的元素主要包括:groupId:定义了项目属于哪个组织或个人。artifactId:定义了项目的名称。version:指定了项目的当前版本。packaging:指定项目的打包方式,如jar、war等。

weixin_42551310的博客 737

MyBatis操作数据库实现CURD小结

mybatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。 它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索,使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Ordinary Java Objects,普通的Java对象)映射成数据库中的记录。 使用mybatis的重要一步是配置,要不怎么知道使用哪一个数据库,有哪些mapper文件,主配置文件 mybatis-config.xml: jdbc_mysql.properties文件: XML

weixin_44519188的博客 396

x86架构学习之中断

外部中断,一般是由CPU的外部引脚电信号触发,这些引脚留给硬件厂商去定义中断,例如主板厂商可以将USB中断挂载70号中断引脚上,MCU厂商可以将片上外设(SPI、I2C等)的中断挂载在指定中断线上。中断描述符主要用于说明该中断的入口地址,中断描述符表则是将中断描述符一项一项管理在一个数组中,每一项中断描述符占用8个字节(64位模式下,占用16字节),其。简称中断,后文如果没特别说明,中断都指外部中断,由外部IO事件触发,由于时钟源来自CPU外部,与CPU时钟不同源,因此是异步事件。

qq_26962739的博客 1565

MyBatis配置文件编写及CRUD操作

实验1参考教材2.1、2.2和2.3小节的内容,配置文件中、、以及元素的使用,完成SqlSession工具类的编写。总结核心配置文件及映射文件各种属性的使用方法。 实验2完成教材案例2.4,员工管理系统的员工信息的CRUD。 实验3 完成教材案例3.5,学生信息查询功能。 实验4 (选)利用Mybatis完成银行转账系统的DAO层的功能改造。

m0_72151428的博客 1654

【学长笔记】点亮 STM32F411CEU6 板载 LED —— 入门级教程

本文提供了STM32F411CEU6开发板(Black Pill)点亮LED的完整教程。详细介绍了硬件信息(板载LED连接PC13,低电平有效)、CubeMX配置步骤(GPIO输出模式)、Keil5工程设置及完整代码实现(包含GPIO初始化和系统时钟配置)。教程还涵盖ST-Link下载器连接方法、程序下载步骤(需配合BOOT0按键操作)以及验证程序运行的方法。该教程特别适合STM32初学者,通过简单的LED闪烁示例快速入门STM32开发。

apple_53308981的博客 1310

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 201

Mybatis学习总结四之基于注解的单表CRUD操作

先认识一下注解概念: 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 作用分类: ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反...

星空下的承诺L的博客 594

用Simulink复现Hopf振荡器:从数学公式到稳定极限环的保姆级仿真教程

本文详细介绍了如何在Simulink中实现Hopf振荡器,从数学原理到仿真建模的全过程。通过参数调试和波形分析,帮助读者掌握Hopf振荡器的核心特性及其在机器人控制等领域的应用。特别强调了自适应调节技巧,提升系统稳定性和鲁棒性。

weixin_29261711的博客 441

MyBatis学习总结(一)---简单配置使用(基于XML方式实现CRUD及加载配置文件的三种方式)

  一、Mybatis简介    Mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。M...

qq_40348465的博客 540

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 320

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

实验五、六 MyBatis配置文件编写及CRUD操作

EE平台企业级开发课程 实验五 实验五、六 MyBatis配置文件编写及CRUD操作

ayslks的博客 939

协方差矩阵自适应进化策略(CMA-ES)详解:从基础原理到优化算法

CMA-ES是一种先进的无导数优化算法,基于生物进化原理解决连续域非线性优化问题。该算法通过自适应调整多元正态分布的均值、协方差矩阵和步长参数,自动学习搜索空间结构,无需梯度信息即可高效优化。核心创新包括协方差矩阵的秩1和秩μ更新策略,以及基于进化路径的步长控制机制。CMA-ES具有旋转不变性、标度不变性和全局探索能力,特别适合3-300维的黑盒优化问题,在复杂系统仿真、超参数调优等领域表现优异。算法实现中关键参数如种群大小、学习率等均有自适应设置规则,使其成为连续优化领域的基准算法之一。

qq_42212808的博客 519

Mybatis学习(二)—— 利用XML配置文件/注解的方式实现CRUD增删改查等操作

文章目录前言一、增二、删三、改一、增 前言 通过前文Mybatis学习(一)—— 新手完成第一个Mybatis程序介绍的完成一个Mybatis的步骤可得,若再来新的需要操作的sql语句时,只需要更改第6步中的UserMapper接口内容,以及第7步中的Mapper.xml配置文件。很大程度简化了代码的编写。 本篇文章将从修改上述两个文件的内容,实现CURD功能。 一、增 UserMapper.java文件中: public interface UserMapper { void addUser(.

人生海海 566

【HEC】HECRAS中的降雨边界

网格降雨可能是城市地区建模的一个好选择。这是因为传统的一维(1D)建模并不能完全捕捉城市地区通常出现的复杂流动模式。使用网格降雨建模方法在构建包含多个未定义流动路径的模型时也非常有用。对于流量分支非常复杂的水道,设定边界条件可能会很困难。 HECRAS提供两种降雨边界添加的方法 - 在指定SA/2D FLOW AREA添加降雨边界 - 在hec-ras 6.0以上版本中 “气象数据” 的选项卡,可以添加具有空间变化的降水量、蒸散量和风。 两种方法只能选择一种,以下分别介绍

```On Earth, Be Water, By Coding``` 1390

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MyBatis案例 | 使用映射配置文件实现CRUD操作——删除数据

使用MyBatis实现删除操作

Alita233_的博客 2506

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MyBatis plus与MyBatis分别实现简单的CRUD

通过MyBatis与MyBatis plus分别实现简单的CRUD,更加直观的区分它们之间的不同的编写风格。MyBatis SQL语句SQL语句封装在配置文件中,便于统一管理与维护;提供了动态SQL标签,支持编写动态SQL。以及提供映射标签,支持对象与数据库的ORM字段关系映射。访问数据库的 sql 语句存放于 mapper (或Dao) 包下的 xml 配置文件中。MyBatis plus SQL语句。

qq_35130745的博客 1912

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

【Mybatis学习总结二】Mybatis操作数据表的CRUD实现

本节内容学习了如何通过Mybatis实现对数据库的增删改查操作。一共有两种实现方式,一是基于XML的实现;第二种是基于注解的实现。 下面来具体介绍两种方法的具体实现: 一、基于XML的实现  1    还是基于第一节中建立的User.java实体类;  2    新建一个工具类MybatisUtils.java(因为在后面的测试类中要得到sqlsessionFactory,代码都是一样的,

noaman_wgs的博客 888

使用 MyBatis 实现基本的 CRUD 操作

MyBatis 是一个优秀的持久层框架,它通过 XML 或注解将 SQL 查询、存储过程以及 Java 对象关联起来,简化了数据持久层的开发。本文将详细介绍如何使用 MyBatis 实现基本的 CRUD(Create、Read、Update、Delete)操作。

FireFox1997 1394

Mybatis:使用映射配置文件实现CRUD操作,能够使用注解实现CRUD操作

以实际案例手把手带你操作 > * 能够使用映射配置文件实现CRUD操作 > * 能够使用注解实现CRUD操作

黑马程序员官方博客 952

Mybatis动态sql实现CRUD操作

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

qq_65142821的博客 1114

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33967071的博客 195

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

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

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

MyBatis学习总结(三)——使用MyBatis对表执行CRUD操作(注解)

在上一篇中我们讲解了有关mybatis的xml配置文件的操作,这次我们使用注解来完成CRUD操作。 1、定义sql映射的接口 package me.gacl.mapping; import java.util.List; import me.gacl.domain.User; import org.apache.ibatis.annotations.Delete; import org.apac...

lixuanfeng blog 2400
上一篇: mybatis总结(一)之mybatis入门
下一篇: mybatis总结(三)之mybatis配置文件的优化
雾中迷童
博客等级 码龄8年 7粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值