使用注解实现MyBatis映射

news2024/10/5 21:21:34

文章目录

  • 前言
  • 简单语句用注解
    • 增加功能
    • 更新功能
    • 删除功能
    • 查询功能
  • 复杂语句用映射
    • 查询功能


前言

提示:这里可以添加本文要记录的大概内容:

注解实现的最大的好处是简单SQL语句放注解里,映射文件就不用写了

数据库代码:

create table DEPT
(
    DEPTNO int primary key,   # 主键不是自增
    DNAME varchar(20),
    LOC varchar(30)
);

在 main/java 文件夹下新建包 mapper 和 po

其中 mapper 包中新建同名的接口和映射文件

po 类代码:

public class Dept {
	private Integer deptno;
	private String dname;
	private String loc;
// 自动生成 Getter、Setter、toString()、有参无参方法
}

提示:以下是本篇文章正文内容,下面案例可供参考

简单语句用注解

增加功能

在接口文件中:

	// 在注解后直接写SQL语句  因为主键不是自增的,这里需要加上主键
	// 如果是自增的:@Insert("insert into dept (dname,loc) values(#{dname},#{loc})")
	@Insert("insert into dept values(#{deptno},#{dname},#{loc})")
	// 后在上面增加注解
	int insertDept(Dept dept);

测试代码:

	@Test 
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"销售部","津海");
		mapper.insertDept(dept);
	}

在这里插入图片描述

更新功能

接口代码:

	@Update("update dept set dname = #{dname},loc = #{loc} where deptno = #{deptno}")
	int updateDept(Dept dept);

测试代码:

	@Test 
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.updateDept(dept);
	}

在这里插入图片描述

删除功能

接口代码:

								    // 基本类型随便起名
	@Delete("delete from dept where deptno = #{abc}")
	int deleteDept(int no);

测试代码:

	@Test 
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
//		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.deleteDept(60);
	}

在这里插入图片描述

查询功能

1、根据部门编号查询某个部门

接口代码:

// 根据编号查询部门						 // 基本类型随便起名
	@Select("select * from dept where deptno = #{xxx}")
	Dept queryDeptByNo(int no);

测试代码:

	@Test 
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		mapper.queryDeptByNo(20);
	}

在这里插入图片描述
2、查所有部门

//	查所有部门
	@Select("select * from dept")
	List<Dept> queryAllDepts();

测试代码:

	@Test
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		List<Dept> depts = mapper.queryAllDepts();
		System.out.println(depts);
	}

在这里插入图片描述

复杂语句用映射

查询功能

新建与接口文件同名的映射文件,映射文件中的namespace是接口文件的限定名

接口文件中:

	List<Dept> queryDepts(Dept dept);
	int queryAllDepts(Dept dept);

映射文件代码:

<mapper namespace="com.mybatis.mapper.DeptMapper">
	<select id="queryDepts" parameterType="Dept" resultType="Dept">
		select * from dept
		<where>
			<if test="deptno != null">
				and deptno = #{deptno}
			</if>
			<if test="dname != null and dname != '' ">
				and dname = #{dname}
			</if>
			<if test="loc != null and loc != '' ">
				and loc like concat('%',#{loc},'%')
			</if>
		</where>
	</select>
</mapper>

测试代码:

	@Test
	public void test() {
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.queryDepts(dept);
	}

重点看语句
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻量级Web框架Flask

Flask-SQLAlchemy MySQL是免费开源软件&#xff0c;大家可以自行搜索其官网&#xff08;https://www.MySQL.com/downloads/&#xff09; 测试MySQL是否安装成功 在所有程序中&#xff0c;找到MySQL→MySQL Server 5.6下面的命令行工具&#xff0c;然后单击输入密码后回车&am…

Scratch 之 TurboWarp 常用插件介绍-2

今天带来2篇 TurboWarp 常用插件介绍 什么你还没有 TurboWarp &#xff1f; 快去下载一个吧 TurboWarp&#xff08;简称TW&#xff09; 在线版 | 离线版下载 TurboWarp优点 编译速度快于原版 Scratch 至少10倍拥有自定义帧的功能&#xff08;比如60 FPS&#xff09;造型编…

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…

云计算——存储虚拟化简介 与 存储模式及方法

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前期回顾 前言 一.存储虚拟化介绍 1.云计算存储基本概念 2.云计算存储模型 3.创…

小米基于 Flink 的实时计算资源治理实践

摘要&#xff1a;本文整理自小米高级软件工程师张蛟&#xff0c;在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 发展现状与规模 2. 框架层治理实践 3. 平台层治理实践 4. 未来规划与展望 Tips&#xff1a;点击「阅读原文」免费领取…

客户端渲染和服务端渲染的区别

一、客户端渲染 页面的渲染工作都是由浏览器来完成的&#xff0c;服务器只是负责提供数据。前端去后端取数据生成DOM树。 **最少两次请求 ** 第一次请求拿到的是页面第二次请求拿到的是动态数据 二、服务端渲染 页面渲染的工作都是由服务端来完成的&#xff0c;数据也是由服…

# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系 很多人对于他们是啥是傻傻分不清的&#xff0c;我做了个表格供大家参考。 摘抄&#xff1a; X11是X Window System Protocol, Version 11&#xff08;RFC1013&#xff09;&#xff0c;是X server和X client之间的通…

Maven进阶1 -- 分模块开发、依赖管理、聚合与继承、属性、版本管理、多环境开发、跳过测试

目录 1.分模块开发 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#xff0c;接口共享。 案例&#xff1a;拆分一下这个SSM整合案例 ①创建maven模块 demo项目下的pom.xml文件&#xff08;主要看一下依赖&#xff09; <dependencies><!…

ApplicationContextInitializer

目录 在何处执行&#xff1f;何时初始化&#xff1f;自己写一个ApplicationContextInitializer 那这个类的设计具体有什么作用呢&#xff1f;&#xff1f;1. DelegatingApplicationContextInitializer2. SharedMetadataReaderFactoryContextInitializer3. ContextIdApplication…

试卷扫描去掉痕迹,这个工具很好用

随着科技的不断发展&#xff0c;试卷扫描越来越普及&#xff0c;成为了现代教育不可或缺的一部分。试卷扫描的优势在于可以快速高效地批改试卷&#xff0c;但试卷上的痕迹往往会干扰扫描的准确性。如果可以扫描试卷并将上面填写的答案内容擦除还可以针对打错的题目重新巩固&…

【Rust】Rust学习 第八章常见集合

Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些集合指向的数据是储存在堆上的&#xff0c;这意味着数据…

mybatis-flex探索

mybatis古今未来 最近无意之中发现了一个非常棒的持久层框架mybatis-flex&#xff0c;迫不及待研究了一下 发现简直就是我的梦中情框&#xff0c;之前写ibatis&#xff0c;后来写mybatis&#xff0c;接着写mybatis-plus&#xff0c;接着研究mybatis-flex ibatis ibatis是apa…

ssm在线医疗服务系统源码和论文PPT

ssm在线医疗服务系统源码和论文PPT003 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 选题意义、价值和目标&#xff1a; 随着经济的迅速发展,人们对生活水平和身体健康的要…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

工业互联网发展在即 博晨(BOCHEN)攻克“卡脖子”难题

5G时代的到来&#xff0c;正在悄然掀起一场智能化技术改革的风暴。工业互联网未来一定要走向制造智能化&#xff0c;这可能是我们未来工业互联网推动工业系统新生态的核心问题。”中国电子信息行业联合会专家委员会主任董云庭就曾表示。目前&#xff0c;工业互联网已经覆盖至国…

DC电源模块在工业控制器中的重要性

BOSHIDA DC电源模块在工业控制器中的重要性 DC电源模块在工业控制器中起着非常重要的作用&#xff0c;它是实现工业控制器运转所必需的组成部分。 DC电源模块主要用于将交流电转换成直流电供给工业控制器中的各个部件&#xff0c;包括控制器内部的微处理器、传感器、执行器等等…

【C++】五分钟带你搞懂深浅拷贝

目录 拷贝函数 浅拷贝拷贝构造函数 深拷贝拷贝构造函数 总结 前言 前面我们学习了C的一些基本的知识点&#xff0c;并且介绍了一些STL里面String的一些关键操作&#xff0c;除了这些博主还新开了一个专栏关于Linux的讲解&#xff08;Linux专栏链接&#xff09;大家可以关注…

Redis-简单动态字符串(SDS)

文章目录 文章概要SDS数据结构定义SDS和C字符串的区别总结参考 文章概要 本篇文章&#xff0c;我们来学习Redis字符串的编码格式SDS编码&#xff0c;文章将将从以下几个方面介绍SDS&#xff1a; SDS的底层数据结构定义Redis是C写的&#xff0c;那SDS和C中的字符串的区别是什么…

勒索软件野蛮生长,迷雾中企业何去何从

根据GRIT最新发布的勒索软件报告显示&#xff0c;今年二季度观测到的勒索软件事件数量明显多于一季度&#xff0c;而导致这一情况的三大原因分别为&#xff1a;漏洞的大规模利用、勒索软件工具技术的“民主化”以及新兴勒索软件组织的野蛮生长。 报告公布了2023年最活跃最多产的…

第9集丨Vue 江湖 —— 监测数据原理

目录 一、修改数据时的一个问题1.1 现象一1.2 现象二 二、Vue监测数据原理2.1 模拟一个数据监测2.2 数据劫持2.3 Vue.set()/vm.$set()2.4 基本原理2.4.1 如何监测对象中的数据?2.4.2 如何监测数组中的数据?2.4.3 修改数组中的某个元素 2.5 案例2.5.1 需求功能2.5.2 实现 一、…