SSM框架之_Mybatis入门笔记,详解快速上手(五):注解开发与Lombok篇。简化开发就看这里,内含干货

Java实体映射工具:MapStruct 当我们需要进行Java Model之间的拷贝时,或者项目要求Java Model需要严格区分为数据对象(DO)、数据传输对象(DTO)和展示对象(VO)的时候,我们就不得不把一个实体中的属性映射到另一个实体中。最简单的做法就是写一个工具类,进行不断的getter / setter,这样虽然能完成要求但却写了很多冗余代码,维护起来相当恶心。所以这个时候就需要一款能自动映射实体属性的工具了。 Spring自带的BeanUtils工具类算是一款,但是它却不能自定义映射规则;ModelMapper也是一款映射工具 阅读详情

注解开发


面向接口编程

真正开发过程中大部分使用注解,mybatis大部分使用配置文件。

使用注解开发是为了更符合面向接口编程的思想。

面向接口编程,目的:解耦合。

在面向对象的系统中,系统的功能是由各种不同的对象协作完成的。对象之间相互调用,而调用的对象内部是如何实现的,对系统设计人员就不是那么的重要。

而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。


接口的理解

  • 定义(规范,约束)与实现(名实分离的原则)的分离。
  • 接口的本身反映了系统设计人员对系统的抽象理解。

三种面向之间的区别

  • 面向对象:考虑问题时,以对象为单位,考虑对象的属性和方法。

  • 面向过程编程:考虑问题时,以一个具体的流程(事务过程)为单位,考虑如何实现。

  • 接口设计与非接口设计:针对复用技术而言,更多体现的是对系统整体的架构。


使用注解开发

一些简单的sql语句,直接给接口的方法加响应的注解。

sql类型有四类,对应的由四种注解:

  • @select ()
  • @update ()
  • @Insert ()
  • @delete ()

直接在注解中写sql语句,但是注解中不能提供mybatis强大的映射功能。


使用注解开发的流程:

  1. 在接口的方法添加对应的注解
//查询全部用户
@Select("select id,name,pwd password from user")
public List<User> getAllUser();
  1. 在mybatis配置文件中绑定接口
<!--使用class绑定接口-->
<mappers>
   <mapper class="com.kuang.mapper.UserMapper"/>
</mappers>
  1. 方法测试:与之前代码相同
@Test
public void testGetAllUser() {
   SqlSession session = MybatisUtils.getSession();
   //本质上利用了jvm的动态代理机制
   UserMapper mapper = session.getMapper(UserMapper.class);

   List<User> users = mapper.getAllUser();
   for (User user : users){
       System.out.println(user);
  }

   session.close();
}

本质

本质:反射机制实现

底层:动态代理


mybatis执行流程解析

mybatis执行流程


参数注解

在接口的方法中,给每个参数都加上@param()注解,SQL注解执行时,会以param注解中的参数名为准。


@Param注解

  • 基本数据类型或者String类型需要加
  • 引用类型不需要加

#{}与${}

#{}类似于预编译,可以有效防止SQL注入。

${}不能防止SQL注入。

#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符

INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);

${} 的作用是直接进行字符串替换

INSERT INTO user (name) VALUES ('${name}');
INSERT INTO user (name) VALUES ('kuangshen');


Lombok

可以简化pojo类开发,少些许多代码,例如:有参构造、无参构造、set和get方法、tostring方法等,直接通过注解的方式实现。


使用步骤

  1. 在IDE中下载lombok插件
  2. 导入lombko的jar包
  3. 给实体类添加想要的注解

常用的注解

@Cleanup

自动调用close()方法。

@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);

会帮助自动关闭资源。

@Getter / @Setter

自动生成Getter/Setter方法。

public class GetterSetterExample {
    @Getter @Setter private int age = 10;
    @Setter(AccessLevel.PROTECTED) private String name;
}

@Data

自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter,@Setter方法。

@AllArgsConstructor

自动生成全参构造方法


@NoArgsConstructor

自动生成无参构造方法

@Mapper(componentModel = “spring“) 1、@Mapper注解的componentModel属性 componentModel属性用于指定自动生成的接口实现类的组件类型。这个属性支持四个值: default: 这是默认的情况,mapstruct不使用任何组件类型, 可以通过Mappers.getMapper(Class)方式获取自动生成的实例对象。 cdi: the generated mapper is an application-scoped CDI bean and can be retrieved via @Inject spr 阅读详情

相关推荐

实现单芯片2400bps 音频编解码方案

终于按照朋友的需求,帮他开发了一款单芯片集音频采集编码传送并接收解码播放功能的方案,交给快递公司邮寄给远在郑州的他.整个项目从开始定型到现在一个样机送出,整整花了1个月时间,感觉挺有成就感,挺有意思,工作是辛苦的,结果却是快乐的.现在将这中快乐的的心情与大家分享一下.    真个项目用一颗主控搞定,ARM9的,200KBytes 片内RAM,主频可以跑到300MHz,64pin LQFP封装

nyxsec的专栏 3685

@Mapper(componentModel = “spring“)注解

1、引入pom <!--mapStruct依赖--> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> <version>1.2.0.CR1</vers

ke1ying的博客 1万+

MCU中GPIO口的驱动方式

MCU中GPIO口的驱动方式 导读: MCU芯片中GPIO口的驱动方式大的可分为输出和输入两类,小的分可以分为8种。 一、四种输入方式 ①上拉输入: 上拉输入抗干扰能力强,特别适合接地信号的输入(比如低电平有效的按键信号输入)。其工作原理如图1所示。 I/O 端口与TTL 施密特触发器之前接入了一个30K~50K 欧姆的上拉电阻,当I/O 端口悬空时,此时MCU 也能读到稳定的高电平状态,...

优快云Frewen的博客 3376

mapstruct使用及@Mapper(componentModel=“Spring“)

mapstruct、@Mapper(componentModel="Spring")

qq_39535439的博客 6218

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 1017

Vivado新手必看:5分钟搞定FPGA程序固化到Flash(附MCS文件生成全流程)

本文为FPGA新手详细解析了如何将程序固化到Flash存储器的完整流程。核心在于理解SRAM工艺FPGA断电易失的特性,并利用Vivado工具将比特流文件转换为Flash可识别的MCS文件。文章重点拆解了生成MCS文件的关键配置步骤、硬件连接要点,以及通过JTAG烧写Flash的实战操作,并提供了常见启动失败问题的排查清单,帮助开发者实现设计从调试到产品部署的关键跨越。

weixin_29230901的博客 356

@mapper(componentModel = “spring”)注解

@mapper(componentModel = “spring”)注解

qq_36937844的博客 3245

AI大模型入门到实战系列(二十一)命名实体识别(NER)

命名实体识别(NER)是自然语言处理中的关键任务,旨在从文本中识别并分类预定义类别的实体(如人名、地点、组织等)。其核心步骤包括文本预处理、实体边界检测和类型分类。主流技术方法经历了从基于规则、统计机器学习到深度学习的演进,当前主要采用预训练语言模型(如BERT)和序列标注技术(如BiLSTM-CRF)。关键技术挑战包括实体边界模糊、嵌套实体和领域适应等问题。NER广泛应用于信息抽取、搜索引擎优化和知识图谱构建等领域,常用精确率、召回率和F1值作为评估指标。实际应用中通常采用BIO标注体系,并通过标签对齐处

echo的博客 1626

SSM框架注解大全

Spring MVC 是Spring框架的一个重要组成部分,提供了一种MVC即模型视图控制器的设计模式实现方式,将应用程序的控制器层、模型层、视图层分离,使得开发人员能够更加高效地构建Web应用程序。可通过注解的方式对数据进行校验,避免开发人员手动校验数据的同时,又提高了系统的安全性和可靠性,有效地避免非法参数和恶意攻击.主要通过使用SQL语句和配置文件来实现,消除了几乎所有的JDBC代码和参数的手动设置,以及对结果集的检索。是一个数据验证框架,用于对Java对象进行校验;

weixin_52007132的博客 1548

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1643

Andrej Karpathy:人工智能的未来发展挑战

《Andrej Karpathy:人工智能的未来发展挑战》 关键词:(1) 人工智能,(2) 发展挑战,(3) 数据隐私,(4) 伦理道德,(5) 可持续发展,(6) 技术创新,(7)

AI天才研究院 1973

SSM之MyBatis 03 —— 使用注解开发、Lombok、多对一&一对多处理

八、使用注解开发 8.1、面向接口编程 我们都学过面向对象编程,也学过接口,但在真正的开发中,我们很多时候都是选择面向接口编程。 根本原因:解耦、可拓展、提高复用、分层开发,上层不用管具体的实现,大家都遵守共同的标准,使得开发变得更容易,规范性更好。 在面向对象的系统中,系统的各种功能是由许多不同对象协作完成的,各个对象内部具体是如何实现的,这对于系统设计者来说不那么重要。 而各个对象间的协作关系是系统设计的关键,不同类的通信、各模块间的交互,这些在系统设计之初就得考虑清楚,面向接口编程就是按照这种思想。

zcy的博客 513

【HEC】HECRAS中的降雨边界

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

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

springboot入门学习

springboot入门整合-SSM框架欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导...

Jerry 1745

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【狂神说】Mybatis学习笔记(全)

mybatis简介,第一个Mybatis程序,CRUD,mybatis配置解析,解决属性名和字段名不一致的问题,日志与分页,使用注解开发,lombok,一对多和多对一处理,动态sql,缓存cache

鹤鸣呦呦、、的博客 6819

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SSM、SpringBoot与Lombok常用注解

本文总结了Java开发中常用的注解分类,主要包括: MyBatis注解(映射、参数处理) Spring核心注解(组件定义、依赖注入、AOP) Spring MVC注解(控制器、请求处理、响应处理) Spring Boot注解(启动配置、功能启用) Lombok注解(简化代码) 提供了各类注解的典型用法示例,如@RestController、@Autowired、@Transactional等,并展示了综合应用场景。这些注解能显著提升开发效率,是Java企业级开发的重要工具集。

2301_76169459的博客 358

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

什么是Spring Boot框架 ?和SSM有什么区别?一篇文章带你轻松入门

SpringBoot对比SSM框架的优势主要体现在简化配置和提升开发效率上。传统SSM框架需要配置多个XML文件(web.xml、spring-mvc.xml等),而SpringBoot采用"约定大于配置"理念,只需少量配置即可快速搭建项目。通过整合Lombok(自动生成getter/setter等方法)和MyBatis-Plus(自动CRUD操作),开发者能更专注于业务逻辑而非基础配置。一个简单的用户查询接口,在SpringBoot中只需定义实体类、Mapper接口和少量注解即可实现完

2401_87691507的博客 1158

SSM2_Mybatis笔记

注意: ${}传入数据会直接显示在生成的sql中, 无法防止SQL注入;$一般用于传入数据库对象, 比如数据库表名;:在数据库表中没有被移除,而是通过一个变量来让他失效!的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。1.#{}用来传入参数, sql在解析的时候会加上" ", 当成字符串来解析;类似Jpa, tk-mapper, MyBatisPlus;2.#{}能够很大程度地防止sql注入;(简称 MP)是一个。

sheep_Code的博客 1016

最全面的Mybatis教程,从“开局”到“通关”(一)

MyBatis 是一款优秀的半自动的ORM持久层框架,本文将从Mybatis简介,Mybatis入门,Mybatis的CRUD实现,Mybatis的配置文件,Mybatis的日志配置,resultMap详解,分页实现,注解式开发,Lombok的使用,关联映射,动态SQL,Mybatis缓存等方面对Mybatis进行详尽介绍~

小新要变强的博客 3418

【SSM框架】Mybatis的基本使用

Mybatis的基本使用 目录Mybatis的基本使用学习目标一、认识Mybatis1. 简介2. 原理3. 为什么使用Mybatis原生jdbc连接4. Mybatis的优点5. Mybatis的核心6. 如何获取mybatis二、Mybatis入门1. 环境搭建2. 创建一个模块,编写MyBatis核心配置文件3. 编写MyBatis工具类4. 创建实体类5. 编写Mapper接口6. 编写Mapper.xml配置文件7. 编写测试类8. 运行结果三、更多案例讲解1. 通过id查询用户2. 根据多个参

胡毛毛的博客 645

简化mybatis - @Data(lombok依赖、lombok插件) 、@BeforeEach、@AfterEac

简化mybatis - @Data(lombok依赖、lombok插件) 、@BeforeEach、@AfterEac

pig_ning的博客 1619

ssm框架集成 课堂笔记

SSM(Spring+SpringMVC+MyBatis)创建Maven项目和搭建环境等各项配置都没有介绍,这里主要是代码实现部分目录一.建立数据库,创建实体类:二.创建数据访问层(mapper层):负责与数据库交互三. 创建服务层(service层)四.创建控制层(controller层):控制请求的响应和页面跳转五. 配置层(config层) ServletConfig.java SpringConfig.java SpringMvcConfi

weixin_63050900的博客 1121

SpringBoot2.1.14整合SSM避坑指南:Lombok+MyBatis常见配置问题解决

本文深度解析了在SpringBoot 2.1.14版本中整合SSM框架时遇到的高频问题,特别是Lombok注解失效与MyBatis XML映射文件找不到等经典难题。文章提供了从依赖管理、IDE配置到MyBatis路径约定的完整解决方案,并分享了实用的调试技巧与配置优化建议,帮助开发者彻底理解并规避这些常见陷阱。

c8d9e0f1的博客 546
上一篇: Java中native关键字的作用
下一篇: SSM框架之_Mybatis入门笔记,详解快速上手(六):一对多与多对一查询处理
折纸之泪
博客等级 码龄7年 25粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值