当前位置: 首页 > news >正文

使用Mybatis接口开发

文章目录

目录


前言

公司项目用到了mybatis开发接口,虽然很简单,但是mybatis不是特别熟悉,这里学习一下


一、Mybatis接口绑定的两种方式

1.接口绑定实现方式

        就是在接口的方法上加上@Select,@update@Insert@Delete等注解

  1. @select注解介绍:
    1. 简便,能快速去操作sql,它只需要在mapper方法中加入@select,然后在括号中写入需要实现的sql语句即可
    2. 另外一种方式就是想我们通常写的xml类似,在注解中使用等相关的标签来实现我们复杂的语句,但是必须在外面一层用标签将sql语句含进去.(不推荐,当条件比较复杂时,字符串中难免会出现很多错误)
    3. 目的是取代xml中的select标签,只作用在方法上面.下面看一下@Select注解的源码介绍:Selet注解只能修饰方法,@select注解的值是字符数组 虽然@Select注解的值是字符数组,但是真正生效的应该是最后那条SQL语句,这一点请大家要留意一下
  2.  @update注解介绍:

    1. 更新参数

2.XML方式的用法

        mybatis的强大之处就在于自定义的SQL语句,映射器的xml文件方式相比JDBC简单,节省代码量(好家伙前几天刚学的jdbc白学了,学编程经典白学)

  1. 先创建Mapper.java接口文档
  2. 创建Mapper.xml配置文件(注意mapper接口文件的函数名要和xml配置文件中id的名字要匹配)
  3. 在全局配置文件中配置映射路径
    1. 全局配置文件一般有三种:application.properties appliccation.yaml application.yml
    2. yml后缀的文件配置更加简便,本次项目的全局配置文件也是这个格式
  4. XML开发方式规范
    1. 在mapper.xml中namespace命令空间等于Mapper接口的全路径名
    2. Mapper.java接口中的方法名和Mapper.xml中的Statement的Id一致
    3. Mapper.java接口中方法的参数类型和Mapper.xml中parameterType的制定类型一致
    4. Mapper.java接口中方法的返回值类型和Mapper.xml中的resultType制定的类型一致

二、注解方式的用法

  1. 注解形式是直接将SQL写在接口方法上
  2. 优点:效率很高
  3. 缺点:SQL有变动时需要重新编译代码
  4. 在mybatis注解的SQL中,基本的注解:@Select,@Update,@Delete,@Insert
  5. @Data注解相当于给注解的对象所有属性全部创建get/set和tostring方法,提升代码的整洁性

零散的知识点:

  1. @RestController意思是return的数据都变成json的格式,返回到前端,但是不会跳转页面.如果想跳转页面的话,就需要把RestController改成Controller,就会跳转页面了
  2. @Resource和@Autowired的区别:
    1. 他们都可以用来装配bean,都可以用于字段或者setter方法()
    2. @Autowired默认按照类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false.
    3. @Resource默认按名称装配,当找不到与名称匹配的bean时才会按照类型进行装配.名称可以通过name属性指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,当注解写在setter方法上时,默认取属性名进行装配
    4. 注意:如果name属性一旦制定,就只会按照名称进行装配
    5. @Autowire和@Qualifier配合使用效果和@Resource一样

总结

对于基于mybites的开发的API接口有了更深的理解,能看懂API逻辑,但还写不出来,争取明天能写出来吧

参考和学习文档:

Spring Boot+mybatis-plus之@Select注解 - 简书

Mybatis使用_mybatis接口实现相关说明_YEEYang12的博客-CSDN博客

http://www.lryc.cn/news/91501.html

相关文章:

  • 数据采集技术的实现原理有哪些?
  • 2023年数学建模随机森林:基于多个决策树的集成学习方法
  • OpenAI发布最新研究让大模型数学推理直接达到SOTA
  • 快速检测 GlassFish 任意文件读取漏洞的 Python 脚本
  • Docker镜像更新通知器DIUN
  • 插件框架PF4J-从理论到实践
  • 怎么将pdf文件免费转为扫描件
  • vue+nodejs校园二手物品交易市场网站_xa1i4
  • Barra模型因子的构建及应用系列六之Book-to-Price因子
  • 【c语言习题】使用链表解决约瑟夫问题
  • JVM之类的初始化与类加载机制
  • 面试专题:java 多线程(1)----synchronized关键字相关问答
  • VMware SD-WAN 5.2 发布 - 软件定义的 WAN
  • Oracle+11g+RAC+PSU_EAM(2)
  • 智能出行 驱动未来|2023 开放原子全球开源峰会 CARSMOS 开源智能出行生态年会即将启幕
  • Linux:centos:周期性计划任务管理《crontab》
  • 克拉默法则证明(Cramer‘s Rule)
  • 【接口防刷】处理方案
  • 安装Linux-SUSE操作系统
  • 二、机器人的结构设计
  • UITableView学习笔记
  • Nginx反向代理与负载均衡
  • Delaunay三角剖分学习笔记
  • @Resource和@Autowired的区别
  • linux达梦数据库的安装与卸载
  • 生成式模型的质量评估标准
  • pinpoint安装部署(相关博客合集)
  • python-匿名函数(lambda函数)
  • JS逆向常见情况
  • 利用matlab对滤波器频率特性分析