4. Springboot快速回顾(@Mapper和@MapperScan)

news2024/9/20 5:33:55

springboot最重要的注解之一,因为有了@Mapper注解,省去了在xml文件繁琐的配置
本文将对比介绍有无注解的区别,加深认识

目录

  • 1 初次使用@Mapper
    • 1.1 创建实体类Stu
    • 1.2 创建dao层接口
    • 1.3 创建service层接口和实现
    • 1.5 创建StuMapper.xml文件
    • 1.4 创建controller类
  • 2 初次使用@MapperScan

项目结构
在这里插入图片描述

1 初次使用@Mapper

前提是数据库已经自己创建了表,在配置文件中连接数据库

1.1 创建实体类Stu

public class stu {
    String name;
    Integer age;
    String sex;
    Integer id;

    public stu() {
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return this.age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return this.sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String toString() {
        return "stu{name='" + this.name + '\'' + ", age=" + this.age + ", sex='" + this.sex + '\'' + ", id=" + this.id + '}';
    }
}

1.2 创建dao层接口

//根据stuid查询学生全部信息
@Mapper
public interface StuDao {
    stu selectById(@Param("stuId") Integer id);
}

重点解释:为何这里使用@Mapper注解,它有什么作用,以及怎么用?

比如我想添加一个查询功能,就需要创建一个dao接口,在接口中定义一个查询函数。当我需要写这个查询函数的sql语言时,就需要创建对应的StuMapper.xml文件,在这个文件里面写。但是这个文件此时无法被扫描到,因此还需要在核心mapper.xml文件中配置路径,以便程序找到我们创建的那些xml文件。

核心mapper.xml文件配置路径案例

> <!--mapper扫描器-->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 <!--如果需要扫描多个包,中间使用半角逗号隔开-->
  <property name="basePackage" value="com.liuyanzhao.ssm.blog.mapper"></property>
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  </bean>
> 

使用@Mapper就是省去了在核心mapper.xml文件中配置的过程。

在每个Dao接口上添加@Mapper文件,会托管给容器,容器自然会找到

1.3 创建service层接口和实现

public interface StuService {
    stu queryStudent(Integer id);
}

@Service
public class StuServiceImpl implements StuService {
    @Resource
    private StuDao stuDao;

    public StuServiceImpl() {
    }

    public stu queryStudent(Integer id) {
        stu stu = this.stuDao.selectById(id);
        return stu;
    }
}

1.5 创建StuMapper.xml文件

<!--namespace是此mapper对应的dao接口-->
<mapper namespace="com.zjh.dao.StuDao">

    <!--resultType是此mapper对应的实体类-->
    <select id="selectById" resultType="com.zjh.model.stu">
        select
            *
        from
            stu
        where
            id=#{stuId};
    </select>

</mapper>

1.4 创建controller类

@Controller
public class stuController {
    @Resource
    private StuService stuService;

    public stuController() {
    }

    @RequestMapping({"/mapper"})
    @ResponseBody
    public String selectById(Integer id) {
        stu stu = this.stuService.queryStudent(id);
        return stu.toString();
    }
}

结束,测试运行即可!

2 初次使用@MapperScan

上述案例仅提供了一个dao接口,实现根据id查学生信息
若我现在需要10个,100个和学生相关的增删改查操作,就得在每个dao接口上写@Mapper注解,这就显得十分啰嗦。因此直接使用一个@MapperScan,就不需要写那么多@Mapper注解了,接下来介绍如何使用这个注解。

针对上述案例,仅修改两处即可。

  1. 去掉@Mapper注解。
  2. 启动类添加@MapperScan注解
@SpringBootApplication

//本来需要在多个Dao接口上写多个@Mapper注解,现在只需要写一个扫描注解,扫描Dao接口 所在的包
//所有的.xml文件在 “com.zjh.dao" 路径下
//如果在A路径下有Dao接口,B路径下有Dao接口,那么 basePackages = {"A路径",”B路径“},因为basePackages底层是数组
@MapperScan(basePackages = "com.zjh.dao")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

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

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

相关文章

岛屿数量 (力扣) dfs + bfs JAVA

给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的…

【Linux】进程间通信 -- 命名管道 | mkfifo调用

小实验1.我们首先创建两个文件2.我们使用创建命名管道的命令mkfifo3.开始执行 在语言层面使用命名管道实现通信1.创建命名管道-函数mkfifo2.写入端代码3.读取端代码小细节&#xff1a; 小实验 1.我们首先创建两个文件 client.cpp: #include <iostream> using namespac…

《向量数据库指南》——什么是比较 Embedding?

目录 比较 Embedding 准备工作 示例 0:Marlon Brando 示例 1:国王与王后 示例 2:Apple,水果还是公司 欢迎回到向量数据库 101 系列教程。 之前的教程中,我们介绍了非结构化数据、向量数据库和 Milvus——全球最受欢迎的开源向量数据库。我们还简单介绍了 Embedding …

windows提权总结

文章目录 windows基础知识提权总结基础知识提权思路metasplit 提权反弹shell提权windows系统配置错误提权系统服务权限配置错误不带引号的服务路径提权注册键 AlwaysInstallElevated 本地dll劫持提权第三方提权sqlserver提权mysql提权MOF提权G6FTP提权 绕过UAC bypassuac远程终…

前端|HTML

参考视频&#xff1a;黑马程序员前端Html5教程&#xff0c;前端必备基础 目录 &#x1f4da;web标准 &#x1f4da;HTML认识 &#x1f407;HTML的概念 &#x1f407;开发工具 &#x1f407;HTML标签基础 ⭐️HTML骨架标签 ⭐️HTML元素标签分类 ⭐️HTML标签关系&#…

一款可源码交付的Java可视化建模规则引擎

规则引擎是一种根据规则中包含的指定过滤条件&#xff0c;判断其能否匹配运行时刻的实时条件来执行规则中所规定的动作的引擎。 规则引擎由推理引擎发展而来&#xff0c;是一种嵌入在应用程序中的组件&#xff0c;实现了将业务决策从应用程序代码中分离出来&#xff0c;并使用预…

FPGA纯verilog实现10G UDP协议栈,XGMII接口UltraScale GTY驱动,提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、该UDP协议栈性能4、详细设计方案SFPSGMII收发接口模块AXIS FIFOUDP协议栈UltraScale FPGAs Transceivers Wizard GTY 5、vivado工程6、上板调试验证并演示准备工作查看ARPUDP数据回环测试 7、福利&#xff1a;工程代码的获取 1、前言 目…

SpringBoot原理分析 | 安全框架:Security

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架&#xff1b;提供一组可以在Spring应用上下文中配置的Be…

使用作用域函数简化您的 Kotlin 代码:释放对象的力量

使用作用域函数简化您的 Kotlin 代码&#xff1a;释放对象的力量 欢迎&#xff0c;亲爱的 Kotlin 爱好者&#xff01;厌倦了在处理对象时反复书写相同的代码吗&#xff1f;别担心&#xff01;Kotlin 的作用域函数来拯救你&#xff0c;为你的编码之旅增添优雅的色彩。在这篇有趣…

华为认证 | 7月底这门HCIA认证即将发布!

华为认证HCIA-Cloud Service V3.5&#xff08;中文版&#xff09;预计将于2023年7月31日正式对外发布。 为了帮助您做好学习、培训和考试计划&#xff0c;现进行预发布通知&#xff0c;请您关注。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技…

小程序学习(三):小程序的宿主环境

1.什么是宿主环境 宿主环境指的是程序运行所必须的依赖环境。例如:Android系统和IOS系统是两个不同的宿主环境。安卓版的微信App是不能在IOS环境下运行的,所以Android是暗转软件的宿主环境,脱离宿主环境的软件是没有任何意义的! 2.小程序的宿主环境 小程序借助宿主环境提供的能…

(4)【轨迹优化篇】线性加权轨迹代价损失评分,轨迹多选一方法--DWA_planner、Open_Planner、lexicographic_planner

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言1、设计代价损失函数进行评分、线性加权法、迹评分轨迹多选一的轨迹优化设计思想&#xff08;1&#xff09;设计代价函数进行…

适用于企业级工作负载的混合闪存存储

NetApp FAS9500、FAS8700、FAS8300&#xff1a;适用于企业级工作负载的 FAS 拥有企业级应用程序和私有云的客户通常部署这些系统来作为架构基础。通过与主要超大规模云提供商的简单集成创建统一的混合云 借助 NetApp FAS 按需扩展性能 客户将这些平台描述为“重型”&#xff0…

2023年开源社执行委员会介绍

总起 开源社的各项工作主要分为内部事务、对外事务与专项工作三大类。整体而言&#xff0c;基础设施、财务、法律与成员发展等工作较为偏向于内部事务&#xff0c;而活动、媒体、社区合作、顾问委员会服务、国际接轨等工作偏向于对外联络与展现&#xff0c;而教育、公益、硬件、…

基于Tensorflow来重现GPT v1模型

OpenAI推出的ChatGPT模型让我们看到了通用人工智能的发展潜力&#xff0c;我也找了GPT的相关论文来进行研究。OpenAI在2017年的论文Improving Language Understanding by Generative Pre-Training提出了GPT的第一个版本&#xff0c;我也基于这个论文来用Tensorflow进行了复现。…

红外雨量计(光学雨量传感器)在监测降雨量的应用

红外雨量计&#xff08;光学雨量传感器&#xff09;在监测降雨量的应用 红外雨量计是一种基于红外光学原理的降雨量监测设备。它利用红外传感器检测雨滴落在传感器上时所产生的反射光信号&#xff0c;根据信号的强弱和持续时间计算出降雨强度和累计降雨量。 红外雨量计在监测降…

FITC Biotin(134759-22-1),5-FAM azide(510758-23-3),荧光素标记试剂的特点

Part1-----FITC-Biotin&#xff0c;134759-22-1 基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a; CAS号&#xff1a;134759-22-1 中文名&#xff1a;异硫氰酸荧光素标记生物素 英文名&#xff1a;FITC-Biotin&#xff0c;Fluorescein Biotin&#xff0c;…

vue element select下拉框树形多选

components 文件下新建 SelectTree文件 index.vue SelectTree index.vue <!--* 下拉树形选择 组件--> <template><el-select ref"select" style"min-width: 260px" :value"value" v-model"valueName" collapse-tags :…

Python应用实例(一)外星人入侵(七)

外星人入侵&#xff08;七&#xff09; 1.射杀外星人1.1 检测子弹与外星人的碰撞1.2 为测试创建大子弹1.3 生成新的外星人群1.4 提高子弹的速度1.5 重构_update_bullets() 2.结束游戏2.1 检测外星人和飞船碰撞2.2 响应外星人和飞船碰撞2.3 有外星人到达屏幕底端2.4 游戏结束 3.…

毫米波雷达(三):实操

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、福相一致性校准二、速度解模糊其他 一、福相一致性校准 多波束天线通道幅相一致性校正及实现 https://www.docin.com/p-2640129630.html 二、速度解模糊 一种…