MyBatis之CRUD操作

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

1、创建一个maven项目并导入相关依赖

在pom.xml文件中导入相关依赖
在这里插入图片描述

2、创建一个POJO

对象中的属性与数据库的字段对应,因为我们从数据库查询、删除等是通过对象来传递的

package com.zhouym.javabean;

public class User {
	private Integer id;
	private String name;
	private Integer age;
	private String address;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
	}
	
}

3、创建对象映射文件

在这里插入图片描述
配置文件中封装crud操作的sql语句

<?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.zhouym.javabean.User">
	<!-- 将数据库查询的结果保存到对象中 -->
  <select id="query" resultType="com.zhouym.javabean.User">
  		<!-- 书写sql语句,没有分号 -->
		select * from tb_user
  </select>
  <!-- 增加数据 -->
  <insert id="insert" parameterType="com.zhouym.javabean.User">
  	insert into tb_user(name,age,address) values(#{name},#{age},#{address})
  </insert>
  <!-- 修改数据 -->
  <update id="update" parameterType="com.zhouym.javabean.User">
  	update tb_user set name=#{name},age=#{age},address=#{address} where id=#{id}
  </update>
  <!-- 删除数据,也可以指定类型 -->
  <delete id="delete" parameterType="int">
  	delete from tb_user where id=#{id}
  </delete>
</mapper>

4、在src/resources下创建配置文件

在这里插入图片描述
db.properties配置文件封装数据库的信息,当我们需要用到什么数据库,可以直接切换

#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/tb_user?characterEncoding=utf-8
username=root
password=123456

#oracle
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:tb_user
#username=root
#password=123456

#SQLServer
#driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tb_user
#username=root
#password=123456

mybaties-config用于配置数据库连接信息

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 引入数据库信息的配置文件 -->
	<properties resource="db.properties"></properties>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置数据源信息 -->
			<dataSource type="POOLED">
				<!-- 引入配置文件中的内容 -->
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 与映射文件建立联系 -->
	<mappers>
		<!-- 这里注意的是,资源路径是映射文件的地址,不能以点分隔 -->
		<mapper resource="com/zhouym/javabean/userMapping.xml" />
	</mappers>
</configuration>

5、创建单元测试类

package com.zhouym.junit;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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.Test;

import com.zhouym.javabean.User;

public class JunitTest {

	@Test
	public void test() throws IOException {
		//通过Resources对象加载配置文件
		InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
		//获取sqlSessionFactory对象
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
		//获取sqlsession对象
		SqlSession sqlSession = ssf.openSession();
		//参数:namespace+id,根据这个路径,再根据这个id可以查询到这条sql语句
		List<User> list = sqlSession.selectList("com.zhouym.javabean.User.query");
		for (User user : list) {
			System.out.println(user);
		}
		//释放资源
		sqlSession.close();
	}
	@Test
	public void add() throws IOException {
		InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		User user = new User();
		user.setName("老邓");
		user.setAge(18);
		user.setAddress("成都");
		int result = sqlSession.insert("com.zhouym.javabean.User.insert",user);
		//显式提交
		sqlSession.commit();
		if (result > 0) {
			System.out.println("插入成功!!!");
		}
		//释放资源
		sqlSession.close();
	}
	@Test
	public void update() throws IOException {
		InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		User user = new User();
		user.setName("隔壁老王");
		user.setAge(18);
		user.setAddress("武汉");
		user.setId(5);
		int result = sqlSession.update("com.zhouym.javabean.User.update", user);
		sqlSession.commit();
		if (result > 0) {
			System.out.println("修改成功");
		}
		sqlSession.close();
	}
	
	@Test
	public void delete() throws IOException {
		InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		int result = sqlSession.update("com.zhouym.javabean.User.delete", 5);
		sqlSession.commit();
		if (result > 0) {
			System.out.println("删除成功");
		}
		sqlSession.close();
	}
	

}

测试结果
增加数据
在这里插入图片描述
查询数据
在这里插入图片描述
修改数据
在这里插入图片描述
删除数据
在这里插入图片描述
源码分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上面简单分析,获取SqlSessionFactory对象以及Inputstream对象时出现重复代码,可以对其进行封装成工具类,可以设计成单例模式

封装的DBUtils

package com.zhouym.DBUtils;

import java.io.InputStream;

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

public class DBUtils {
	
	private static SqlSessionFactory factory;
	
	public static SqlSessionFactory getInstance() {
		if (factory == null) {
			InputStream in = null;
			try {
				in = Resources.getResourceAsStream("mybaties-config.xml");
			} catch (Exception e) {
				e.printStackTrace();
			}			
			synchronized (DBUtils.class) {
				if (factory == null) {
					factory = new SqlSessionFactoryBuilder().build(in);
				}
			}
		}
		
		return factory;
	}
	
}

测试类

package com.zhouym.junit;

import static org.junit.Assert.*;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.zhouym.DBUtils.DBUtils;
import com.zhouym.javabean.User;

public class NewJunitTest {

	@Test
	public void test() {
		//通过DBUtils获取SqlSessionFactory对象
		SqlSessionFactory factory = DBUtils.getInstance();
		//获取SqlSession对象
		SqlSession session = factory.openSession();
		List<User> list = session.selectList("com.zhouym.javabean.User.query");
		for (User user : list) {
			System.out.println(user);
		}
		session.close();
	}
	
	@Test
	public void test1() {
		//通过DBUtils获取SqlSessionFactory对象
		SqlSessionFactory factory = DBUtils.getInstance();
		//获取SqlSession对象
		SqlSession sqlSession = factory.openSession();
		User user = new User();
		user.setName("老邓");
		user.setAge(18);
		user.setAddress("成都");
		int result = sqlSession.insert("com.zhouym.javabean.User.insert",user);
		//显式提交
		sqlSession.commit();
		if (result > 0) {
			System.out.println("插入成功!!!");
		}
		//释放资源
		sqlSession.close();
	}
	
	@Test
	public void test2() {
		//通过DBUtils获取SqlSessionFactory对象
		SqlSessionFactory factory = DBUtils.getInstance();
		//获取SqlSession对象
		SqlSession sqlSession = factory.openSession();
		User user = new User();
		user.setName("隔壁老王");
		user.setAge(18);
		user.setAddress("武汉");
		user.setId(10);
		int result = sqlSession.update("com.zhouym.javabean.User.update", user);
		sqlSession.commit();
		if (result > 0) {
			System.out.println("修改成功");
		}
		sqlSession.close();
	}
	
	@Test
	public void test3() {
		//通过DBUtils获取SqlSessionFactory对象
		SqlSessionFactory factory = DBUtils.getInstance();
		//获取SqlSession对象
		SqlSession sqlSession = factory.openSession();
		int result = sqlSession.update("com.zhouym.javabean.User.delete", 10);
		sqlSession.commit();
		if (result > 0) {
			System.out.println("删除成功");
		}
		sqlSession.close();
	}

}

CoppeiaSim(VREP)入门 vrep/CoppeliaSim关节抖动问题原因总结【Coppeliasim|轨迹规划(一)】设置机械臂的关节角时保证机械臂不散架设置机械臂的关节角时保证机械臂不散架。 阅读详情

相关推荐

2025年有道翻译网页版JS逆向实战:从抓包到AES解密,手把手教你搞定sign签名

本文详细解析2025年有道翻译网页版的JS逆向实战,从抓包分析到AES解密全流程。通过实战演示签名生成机制和AES-CBC解密技术,帮助开发者破解有道翻译的反爬系统,实现高效数据获取。重点涵盖动态密钥处理、错误重试机制及反反爬策略,为开发者提供完整的技术解决方案。

weixin_30379531的博客 499

使用mybatis实现CRUD(超详细)

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

ZJRUIII的博客 5202

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

MyBatis-初识MyBatis并实现CRUD

了解Mybatis、Mybatis的创建、Mybatis实现CRUD

萌新 872

内网穿透-frp二层隧道搭建

环境: weblogic: 192.168.0.133 10.10.20.12 win7 : 10.10.20.7 10.10.10.7go语言、跨平台的 可以分为frpc和frps frpc—>请求----->frps frps:放到黑客公网上 1.需要出网 2.配置: frpc:放到肉鸡上,请求frps 2.端口转发 2.1frpc传到肉鸡(weblogic) 利用工具,传入内存马到weblogic,然后使用冰蝎进行连接 然后在文件管理中上传frpc.exe和frpc.ini文件 fr

yyytaotao的博客 2093

tiny4412用 usb 连接计算机显示sec s5pc210 test b/d 解决方法

当我用USB线连接tiny4412的microUSB端口的时候,出现了驱动没有正常安装,显示“sec s5pc210 test b/d” 出现这种问题的原因有: 1、没有安装到正确的USB驱动; 2、SD卡没有插好 我出现问题的原因属于第二种,插入SD卡后,上电后,LCD屏亮了,但没有任何显示   解决方法是:     更换一张SD卡,重新插入开发板卡槽,上电开

karaskass的博客 3230

使用MyBatis实现CRUD

MyBatis介绍: ​ mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 ​ mybatis 通过xml 或注解的方式将执行的各种statement 配置起来,并通过java 对象和statement 中sql的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql并将结果映射为 java 对象并返回。 采用 ORM (

Mr. Xu的博客 916

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 239

MyBatis(三)使用MyBatis完成CRUD(增删改查)

1、创建module(Maven的普通Java模块):mybatis-002-crud2、pom.xml3、mybatis-config.xml放在类的根路径下4、CarMapper.xml放在类的根路径下5、logback.xml放在类的根路径下6、提供com.powernode.mybatis.utils.SqlSessionUtil工具类7、创建测试用例:com.powernode.mybatis.CarMapperTest。

ww981580010的博客 900

XDMA原理学习(1)——DMA技术详解

DMA 技术是Direct Memory Access的缩写,其意思是“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。DMA是所有现代计算机的重要特色,它允许不同速度的硬件设备进行沟通,而不需要依于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的数据复制到寄存器,然后把它们再次写回到新的地方。在这个时间里,中央处理器就无法执行其它的任务。

apple_53311083的博客 8365

华为OD机试2025A卷 - BOSS的收入(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - BOSS的收入(Jav一个XX产品行销总公司,只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销。规定,每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级。现给出一组分销的关系,和每个分销的收入,请找出boss并计算出这个boss的收入。输入:分销关系和收入:[[分销id 上级分销id 收入], [分销id 上级分销id 收入], [分销id 上级分销id 收入]]输出:[boss的ID, 总收入]

算法大师! 1168

使用MyBatis实现CRUD操作

使用MyBatis查询表记录使用MyBatis插入表记录使用MyBatis更新表记录使用MyBatis删除表记录。

梁辰兴的博客 1508

国科大学习资料--人工智能原理与算法-2020年期末考试题解析(学长整理)

国科大学习资料–人工智能原理与算法-2020年期末考试题解析 张文生老师主讲 试卷共有6道题,题目不难,希望大家能取得好的成绩。 3.9 传教士和野人问题。三个传教士和三个野人在河的一岸,有一条能载一个人或者两个人的船。请设法使所有人都渡到河的另一岸,要求在任何地方野人数都不能多于传教士的人数。这个问题在AI领域中很有名,是因为它是第一个从分析的观点探讨问题形式化的论文的主题(Amarel,1968)。 a. 请对该问题进行详细形式化,只描述确保该问题求解所必需的特性。画出完整的状态空间图。 b. 应用合适

无名何许人的博客 4778

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

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

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

使用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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MyBatis-CRUD操作

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

weixin_47243236的博客 291

SpringBoot整合Mybatis进行crud操作

SpringBoot整合Mybatis进行crud操作。

qq_38930254的博客 1033

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的博客 393

MyBatis CRUD标签:核心操作解析

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

JavaCodePro的博客 612

【MyBatis】使⽤MyBatis完成CRUD操作

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

wasd2051678946的博客 1064

mybatis的CRUD操作

在mybatis的配置文件的标签中添加接口类的全限定路径:com.mybatis.mapper.UserMapper2。注意:Mybatis映射器XML对于多个参数,默认情况下只识别arg0、arg1、paraml和param2这种内部定义的名称,性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。动态SQL的参数名字必须和map集合的key键的名称相同;作用:为全限定类名重新配置一个简单的名字,方便后面的引用,减少代码的冗余。

ArrayAda的博客 950

MyBatis的CRUD操作

1.回顾mybatis环境搭建步骤 1.1:创建maven工程 1.2:导入坐标 1.3编写实体类和持久层接口 1.4编写SqlMapConfig.xml

weixin_46272350的博客 292

Mybatis动态sql实现CRUD操作

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

qq_65142821的博客 1114

Mybatis方式完成CRUD操作

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

令狐_JackieHao的博客 2122
上一篇: MyBatis简介及入门案例
下一篇: MyBatis之log4j使用及结合接口方式实现crud
zhouym_
博客等级 码龄8年 280粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值