mybatis初学总结

MyBatis 知识点总结(初学者版) MyBatis是一款简化Java程序与数据库交互的持久层框架,核心思想是将SQL与Java代码分离。它通过配置文件或注解定义SQL,自动执行并映射结果,避免了JDBC繁琐操作。核心组件包括SqlSessionFactory(创建SqlSession)、SqlSession(执行SQL)、Mapper接口(定义数据库操作)和映射文件(存储SQL)。使用步骤包括:添加依赖、编写配置文件、定义Mapper接口和映射文件。MyBatis支持动态SQL、结果映射和注解开发,但推荐使用XML方式。核心配置文件需按顺序配 阅读详情

mybatis初学总结

2019年8月9日19:45:00

1.orm

什么是orm?

orm即对象关系映射 (object relation mapping),即java对象和关系数据表之间的映射关系,

java实体的名字 ----- 表名

java实体的名字 ------ 字段名

orm有哪些?

SpringJDBC,beanUtils,mybaties,hibernate

myBatis和hibernate的区别?

两者底层都用了jdbc去实现功能,都有数据库连接池,

不同之处:hibernate适应于项目代码(sql)基本不变的需求下时比较方便,myBatis的应用比较灵活

myBatis主要完成的工作?

1.底层jdbc数据库连接(所以mysql-connection包还是要导)

2.运用反射技术将java实体和数据库表产生映射关系,一一对应

(另外还内含数据库连接池,所以比c3p0+beanUtils强大)

2.如何配置mybatis在eclipse?

1.导包

]

2.配置mybatis-config.xml文件在src下

使用mybatis的注意事项

例子:


public class Demo01 {
	public static void main(String[] args) throws IOException {
		//selectAll();
		//insertOne();
		//selectOnebyId();
		//updateOneById();
		//delectByID();
		
		SqlSession sqlSession = SqlSessionUtils.getSqlSession();
		List<Student>  studentlist = sqlSession.selectList("com.xiaoxin.bean.StudentMapper.selectAll");
		for (Student student : studentlist) {
			System.out.println(student);
		}
		
		SqlSessionUtils.releaseSqlSession(sqlSession);
		
		
		
	}

	private static void delectByID() throws IOException {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession openSession = sqlSessionFactory.openSession();
		
		openSession.delete("com.xiaoxin.bean.StudentMapper.deleteOneByid",2);
		
		openSession.commit();
		openSession.close();
	}

	private static void updateOneById() throws IOException {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession openSession = sqlSessionFactory.openSession();
		Student stu = new Student(2,"小芳", 22);
		openSession.update("com.xiaoxin.bean.StudentMapper.updateOneByid", stu);
		
		openSession.commit();
		openSession.close();
	}

	private static void selectOnebyId() throws IOException {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession openSession = sqlSessionFactory.openSession();
		Student stu = openSession.selectOne("com.xiaoxin.bean.StudentMapper.selectOneById", 1);
		System.out.println(stu);
		openSession.commit();
		openSession.close();
	}

	private static void selectAll() throws IOException {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession openSession = sqlSessionFactory.openSession();
		
		List<Student> stulist = openSession.selectList("com.xiaoxin.bean.StudentMapper.selectAll");
		for (Student student : stulist) {
			System.out.println(student);
			
		}
		
		openSession.commit();
		openSession.close();
		
	}

	private static void insertOne() throws IOException {
		//		ceshimap
				InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
				SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
				SqlSession openSession = sqlSessionFactory.openSession();
				
				Student stu = new Student("小敏", 21);
				
				
				openSession.insert("com.xiaoxin.bean.StudentMapper.saveOne", stu);
				
		//		要手动提交
				openSession.commit();
				
		//		关闭opensession对象
				openSession.close();
	}
}


xml如何配置?

mybatis-config.xml(放src下)
<?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>

	<!-- 配置MyBatis的环境 -->
	<environments default="env">
		<!-- 配置一个环境 -->
		<environment id="env">
			<!-- 配置事务管理器 JDBC(有事务)、MANAGED(托管) -->
			<transactionManager type="JDBC" />
			<!-- 配置数据源 JNDI(web服务器方式定义数据源)、POOLED(自带连接池)、UNPOOLED(不带连接池) -->
			<dataSource type="POOLED">
				<!-- 连接数据库驱动 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 连接数据库URL -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatiesdemo1" />
				<!-- 连接数据库用户名 -->
				<property name="username" value="xiaoxin" />
				<!-- 连接数据库密码 -->
				<property name="password" value="root" />
			</dataSource>
		</environment>
		
		<!-- 配置一个环境,这里可以是别的环境,可以是别的数据库 -->
		<!-- <environment id="env">
			配置事务管理器 JDBC(有事务)、MANAGED(托管)
			<transactionManager type="POOLED" />
			配置数据源 JNDI(web服务器方式定义数据源)、POOLED(自带连接池)、UNPOOLED(不带连接池)
			<dataSource type="POOLED">
				连接数据库驱动
				<property name="driver" value="com.mysql.jdbc.Driver" />
				连接数据库URL
				<property name="url" value="jdbc:mysql://localhost:3306/aa" />
				连接数据库用户名
				<property name="username" value="root" />
				连接数据库密码
				<property name="password" value="root" />
			</dataSource>
		</environment> -->
		
		
		
		
		
		
	</environments>

	<!-- 配置XxxMapper.xml访问数据库SQL文件
	<mappers>
		<mapper resource="com/xxx/domain/ProdcutMapper.xml"/>
	</mappers> -->
	<mappers>
		<mapper resource="com/xiaoxin/bean/StudentMapper.xml"  />
	</mappers>
	
	
</configuration>

StudentMapper.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">
<!-- 定义访问数据表的SQL映射标签
	命名空间相当于这份文件的一个id号 
	namespace : 命名空间(用来区分其它的mapper文件),一般为该文件所在的全路径包名+mapper文件名
	一般在src下面的com开始
-->
<mapper namespace="com.xiaoxin.bean.StudentMapper">
	<!-- 添加
		id : 唯一的标识
		parameterType : 参数类型(用来为sql语句中的占位符赋值) 可选
	 -->
	<!-- <insert id="save" parameterType="com.xxx.mybatisqs.domain.Product">
		insert into product(product_name, product_price) values(#{name}, #{price})
	</insert> -->
	
	<insert id="saveOne" parameterType="com.xiaoxin.bean.Student" >
		insert into student(sname,age) values(#{sname},#{age})
	</insert>
	
	<select id="selectAll" resultType="com.xiaoxin.bean.Student" >
		select * from student
	</select>
											
	<select id="selectOneById" parameterType="java.lang.Integer" resultType="com.xiaoxin.bean.Student" >
		select * from student where sid = #{sid}
	</select>
	
	<update id="updateOneByid" parameterType="com.xiaoxin.bean.Student">
		update student set sname = #{sname} where sid = #{sid}
	</update>

	<delete id="deleteOneByid" parameterType="java.lang.Integer" >
		delete from student where sid = #{sid}
	
	</delete>	
	
	
	
	
	
</mapper>


3.更多参考

https://blog.youkuaiyun.com/zhongliwen1981/article/details/98586898

MyBatis初学者完整项目实践代码 MyBatis 是 Java 程序员众所周知的持久层框架,它提供了一种在 Java 应用中管理 SQL 语句执行的优雅方式。通过 XML 或注解配置,MyBatis 能够有效地将对象模型映射到数据库的表结构中。它的出现极大简化了传统 JDBC 代码的编写工作,并且提供了比原始 JDBC 更多的控制灵活性。MyBatis 的核心组件包括::用于创建 SqlSession 对象的工厂。SqlSession:一个可以从数据库执行 SQL 命令的 API 接口。 阅读详情

相关推荐

告别SD卡!手把手教你用NVMe硬盘盒给Jetson Orin Nano离线烧录Ubuntu系统

本文详细介绍了如何利用NVMe硬盘盒为Jetson Orin Nano离线烧录Ubuntu系统,替代传统SD卡方案。通过硬件选择、系统镜像准备到烧录命令的全流程解析,帮助开发者提升存储性能与系统稳定性,特别适合嵌入式开发场景。

weixin_30808693的博客 458

MongoDB-插入数据insert、insertOne、insertMany、save用法介绍

先针对上篇文章中MongoDB的_id字段含义做一些补充的描述,上篇文章地址:MongoDB-_id字段的含义介绍补充说明:MongoDB是一个分布式的数据库,使用ObjectId类型数据作为主键的话,可以有效避免不同机器写入数据时_id的唯一性。上篇文章中有介绍过ObjectId类型的_id每一位对应的含义。除了之前介绍过的,可以自定义_id的值以外,_id字段的类型除......

专注测试领域知识分享和技能提升 1万+

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 434

JDBC 快速入门

JDBC英文全称是Java Database Connectivity,也就是Java数据库连接。这是一个Java连接SQL数据库的标准,包含了常用的API,让我们能方便的连接盒管理SQL数据库。每个数据库厂商都会提供相应的JDBC驱动程序,实现相应的接口。这样我们就能以统一的方式,操作不同的数据库了。 建立...

weixin_34318956的博客 311

EverOS:为AI智能体构建长期记忆系统的完整指南

长期记忆是AI智能体实现持续学习和自我演进的核心能力,它通过结构化存储和关联检索历史交互信息,使智能体能够跨越单次对话的局限。其技术原理通常涉及向量数据库、记忆提取算法和知识图谱等组件,用于对非结构化对话内容进行编码、组织和索引。这一能力的技术价值在于显著提升了智能体的个性化服务水平、任务完成连贯性以及从经验中学习的能力,是实现真正“智能”伙伴的关键。在应用场景上,长期记忆系统广泛应用于个性化聊天伴侣、持续学习的编程助手、游戏NPC角色塑造以及客户服务机器人等领域。本文以EverOS为例,深入解析了其提供的

weixin_28679635的博客 449

三维(点云)语义分割概述以及方法总结

语义分割 语义分割需要两部分 classification: 需要全局信息 segmentation:更加依赖全局信息和局部信息 一般的网络结构是: 提特征-特征映射-特征图压缩(降维)-全连接-分类,其实就是encoder-decoder的过程, 比如在二维的的pspnet,fcn等等 0. 三维表示的数据结构 Point cloud 无序性 点云实际上是无序的,比如有8个点云,你放到...

renhaofan的博客 3万+

python mysql操作封装库_Python:Mysql连库及简单封装使用, python mysql操作类

实例 1:通过db_config.json加载数据库配置; 常规的增删改查进行封装代码连库配置:db_config.json{"host": "192.168.7.251","user": "root","password": "123456","db": "mars","charset": "utf8","port": 3306}封装工具类:mysqlutils.py#!/usr/bin...

weixin_29758911的博客 1004

HDMI采集芯片 ADV7611采集PC数据调试总结

开发环境:TI DM365 平台, ADV7611采集板, CCS5.5 第一步:I2C调通 这张是 ADV7611 读写的时序图,可以看出在写和读的时候发送地址数据的时候的停止位信息是不同的,在写的时候是不需要停止位的,但是读的时候是要停止位的。如果I2C在硬件没问题的时候可以考虑是不是这方面的问题。 第二步:map 配置: 根据官方推荐配置进行配置:   0x98,

带头奋青的博客 1万+

MyBatis insert和select例子

1.首先下载MyBatis支持包 mybatis-3.2.1.jar 2.编写代码(1)MyBatis配置文件<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-c

u012552536的博客 4176

【AI大模型:前沿】44、大模型+机器人:从自动化工具到通用智能体的技术革命与应用全景

大模型与机器人的融合催生了“具身智能体”,突破传统机器人智能化缺失、功能单一等瓶颈。大模型赋予机器人三大能力:常识推理(如热牛奶需去包装)、模糊指令解析(如“整理书桌”拆解步骤)、零样本任务泛化(如搭乐高桥)。技术实现上,通过多模态融合(视觉-语言-动作)、仿真训练(虚拟试错)和实时反馈(动态调整动作)形成闭环。主流框架如Google RT-2(端到端动作生成)、斯坦福Q-Transformer(强化学习优化)和Figure 01(ChatGPT驱动人形机器人)各具优势,可适配工业、家庭等场景。该技术正重塑

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2019

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1254

初学Mybatis 终极新手入门

初学Mybatis Part 1 终极新手入门 下面类容不一定对哈,才接触没多久(甚至都是新学java),大部分都是看网课的文字描述加上一点点自己理解,轻喷,有什么不对的可以告诉我哦,我慢慢学习 1.什么是框架 它是软件(项目开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: ​ 框架封装了很多细节,试开发者可以使用极简的方式实现功能。提高开发效率。 2.三层架构 表现层:...

韦恩少爷的博客 1510

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

[系统移植] 移植主线U-Boot(v2024.01-rc3)到RK3399

Systemcall名屋 1003

初学MyBatis

MyBatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 添加pom依赖 <d...

蔚蓝色丨天空的博客 285

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

初学Mybatis复习以及第一次写博文

初学Mybatis ##框架的概念 框架是一个提供了可重用的公共结构的半成品。 ## 主流框架介绍 Struts 2,Hibernate,Spring,SpringMVC,MyBatis. Mybatis的介绍及其环境搭建 数据持久化的概念 将内存中的数据模型转换为存储模型。以及将存储模型转换为内存中的数据模型的统称 (也就是内存中的临时数据改为数据库中的持久话数据) 开源的数据持久层框架,内部...

qq_40291278的博客 256

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

初学MyBatis遇到的一些报错问题

初学MyBatis遇到的一些报错问题 报错: 一. 关于SSL报错:需要写 二. 不能连接到数据库:unknowm database ‘student’ 或者 commucation Link failure 2.1情况一 在任务管理器中关闭PID为4608的进程。 端口号被占用,可能是mysql自己,关闭再重启。 2.2情况二 url: jdbc:mysql://localhost:3306/myprojects?useSSL=false 写成了表名 student,所以连接不到要写数据库名。 2.

ambition_lz的博客 407

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

初学Mybatis

官网地址:https://mybatis.org/mybatis-3/ 1、准备开发环境 pom.xml文件引入所需要的jar包: mybatis jar包: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> ...

海米一枚 144

MyBatis初学笔记

MyBatis1、创建表2、 插入数据3、创建Maven项目 - MyBatisDemo,在pom文件里添加相应的依赖![在这里插入图片描述](https://img-blog.csdnimg.cn/20210303152748802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY1OTUzNA==,size_16,col

weixin_50659534的博客 727

初学MyBatis 配置理解

关于MyBatis一些常用的配置

m0_69007223的博客 287

MyBatis初学

MyBatis 初学笔记 Student.java package com.xiejiaohui.domain; import java.util.Date; public class Student { private Integer studId; private String name; private String email; priv...

148

MyBatis初学常见运行报错

错误1 核心配置文件(mybatis-config.xml)没有 注册映射文件(EmpMapper.xml) org.apache.ibatis.binding.BindingException: Type interface com.jx.dao.EmpMapper is not known to the MapperRegistry. 如何修改 在核心配置文件中注册映射文件 mybatis-config.xml <!--指定 映射器--> <mappers...

qq_61222203的博客 617

初学MyBatis:搭建MyBatis框架

本文是作者在自学MyBatis后的自我总结和复习,如有错误请联系作者,不胜感激

qq_45785650的博客 228

MyBatis初学(1),介绍及快速入门

MyBatis初学(1),介绍及快速入门 个人推荐学习MyBatis的时候看MyBatis的官网,官网有中文支持,初学使用完全足够了 下面的流程官网上均有说明 MyBatis官网https://mybatis.org/mybatis-3/zh/index.html 简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC ...

weixin_45422890的博客 244

初学Mybatis遇到的空指针问题

Exception in thread “main” org.apache.ibatis.exceptions.PersistenceException: Error opening session. Cause: java.lang.NullPointerException Cause: java.lang.NullPointerException at org.apache.ibatis.e...

oliverqyw的博客 925

初学Mybatis01

MybatisMybatis入门创建maven项目导入依赖创建对应的实体类编写UserDaoMyBatis配置文件创建映射文件创建测试常见错误数据库时区错误mapper.xml配置错误main方法测试报错 Mybatis入门 创建maven项目导入依赖 创建对应的实体类 @Data @AllArgsConstructor @NoArgsConstructor public class User { private Integer id; private String username;

weixin_44188703的博客 479
下一篇: springBoot+Maven完全开发手册(项目入门搭建01-基本入门)
xiaoxin_su
博客等级 码龄8年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值