springboot[4]_配置mybatis

news/2024/11/17 19:28:21/文章来源:https://www.cnblogs.com/Aeons/p/18375217

在springboot中使用mybatis

  1. 建表
    在test库中,建立一张animal表,并存入三条数据。
    CREATE TABLE test.animal (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(30) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
    PRIMARY KEY (id) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    INSERT INTO test.animal(id, name) VALUES (1, 'dog');
    INSERT INTO test.animal(id, name) VALUES (2, 'cat');
    INSERT INTO test.animal(id, name) VALUES (3, 'pig');

  2. 导入依赖
    导入mybatis 和 mysql 依赖,因为springboot有指定mysql的版本,所以我就没写版本。


    org.mybatis.spring.boot

         <artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
    
  3. yml配置
    spring:
    datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver

  4. entity,mapper和service
    AnimalMapper: (注解方式,当然也可以使用xml配置)
    @Mapper
    public interface AnimalMapper {
    @Select("select * from animal")
    List selectAll();

    @Select("select * from animal where id = #{id}")
    Animal selectByKey(Integer id);

    /**

    • 因为是自增id,所有加上@Options注解
      /
      @Insert("insert into animal(id,name) values (#{id}, #{name}) ")
      @Options(useGeneratedKeys = true, keyProperty = "id")
      void insertOne(Animal animal);
      }
      IAnimal:
      public interface IAnimal {
      /
      *
    • 查找所有
      */
      List selectAll();

    /**

    • 按主键查找
      */
      Animal selectByKey(Integer id);

    /**

    • 添加一个元素
      */
      void insertOne(Animal animal);
      }
      AnimalImpl
      @Service
      public class AnimalImpl implements IAnimal {
      @Resource
      private AnimalMapper animalMapper;

    @Override
    public List selectAll() {
    return animalMapper.selectAll();
    }

    @Override
    public Animal selectByKey(Integer id) {
    return animalMapper.selectByKey(id);
    }

    @Override
    public void insertOne(Animal animal) {
    animalMapper.insertOne(animal);
    }
    }
    Animal:
    public class Animal {
    private Integer id;

    private String name;

    public Integer getId() {
    return id;
    }

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

    public String getName() {
    return name;
    }

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

  5. 控制层
    AnimalController
    @RestController
    public class AnimalController {
    @Resource
    private IAnimal iAnimal;

    @GetMapping("/getAll")
    public List getAll() {
    return iAnimal.selectAll();
    }

    @GetMapping("/getOne")
    public Animal getOne(@RequestParam("id") Integer id) {
    return iAnimal.selectByKey(id);
    }

    @PostMapping("/insertOne")
    public void insertOne(@RequestBody Animal animal) {
    iAnimal.insertOne(animal);
    }
    }

  6. 测试
    ● 查所有数据
    image

● 条件查询
image

● 新增数据
image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt5.14.2 MSVC opencv(不结合vs)路径添加问题 测试通过

不换行写法1 win32:CONFIG(release, debug|release): LIBS += -LG:/opencv4.4.0/opencv4.4_vs_msvc19_qt6.5/x64/vc17/lib/ -lopencv_aruco440 -lopencv_bgsegm440 -lopencv_bioinspired440 -lopencv_calib3d440 -lopencv_ccalib440 -lopencv_core440 -lopencv_cvv440 -lopencv…

Java学习笔记7-变量

1.1变量是程序的基本组成单位 不论是使用那种高级别语言,变量都是其程序的基本组成单位,比如1.2概念 变量相当于内存中一个数据存储空间 的表示,你可以把变量看做是一个房间的门牌号,通过 门牌号 我们可以找到房 间,而通过变量名可以访问到变量 ( 值 ) 。 1.3变量的使用步…

什么?!90%的ThreadLocal都在滥用或错用!

最近发现系统里面在使用到了 ThreadLocal,乍一看,好像很高级的样子。再仔细一看,完全就是一个 ThreadLocal 滥用的典型案例啊!甚至,日常的业务系统中,90%以上都在滥用或者错用啊最近在看一个系统代码时,发现系统里面在使用到了 ThreadLocal,乍一看,好像很高级的样子。…

半导体行业的数据革命:高性能数据采集系统如何改变游戏规则!

随着国产替代和半导体工厂扩产潮,半导体工厂有着大量建厂和设备管理需求,设备数据采集作为现代工业生产与管理的关键环节,其重要性不言而喻,数字化转型正深刻推动半导体制造企业实现远程监控、提高生产效率、降低生产成本、优化产品质量及明晰精细化方向。 半导体机台设备…

除了按值和引用,方法参数的第三种传递方式

参数在方法种具有按“值(by value)”和“引用(by ref)”两种传递方式,这是每个.NET程序员深入骨髓得基本概念。但是我若告诉你,.NET规定的参数传递形式其实是三种,会不会颠覆你的认知。参数在方法种具有按“值(by value)”和“引用(by ref)”两种传递方式,这是每个…

强!34.1K star! 再见Postman,新一代API测试利器,功能强大、颜值爆表!

1、引言 在当今的互联网时代,API(应用程序编程接口)已经成为连接不同软件系统的桥梁。作为一名开发者,掌握API测试技能至关重要。市面上的API测试工具琳琅满目,今天我们要介绍的是一款开源、跨平台的API测试工具——Insomnia。 2、Insomnia介绍 Insomnia是一款功能丰富、易…

Modbus初学者教程,第五章:Modbus 中的功能码和异常码

第五章:Modbus 中的功能码和异常码平时调试Modbus设备,或者学习Modbus协议,推荐一款Modbus主从站模拟器: 主站下载地址:Modbus从站模拟器 从站下载地址:Modbus主站模拟器可视化 Modbus 设备中的数据 Modbus 从设备可以想象为具有一个内部电子表格,其中填满了数字。Modbu…

袋鼠

先转化一下题意:求有多少个1~n的排列p能够满足 \(\forall i \in (1,n)\) ,使 $ p_{i} $ 左右两边的数同时小于或者大于 \(p_{i}\) ,并且\(p_{1}=s,p_{n}=t\) 。 比较明显的预设型DP(连转化题意我都做不到,悲),先正常来分析一下,我们填数从小往大枚举,如果我们填入一个数,…

JetBrains Writerside 2024.2 (macOS, Linux, Windows) - 编写、测试、构建和发布最佳教程

JetBrains Writerside 2024.2 (macOS, Linux, Windows) - 编写、测试、构建和发布最佳教程JetBrains Writerside 2024.2 (macOS, Linux, Windows) - 编写、测试、构建和发布最佳教程 JetBrains 跨平台开发者工具 请访问原文链接:https://sysin.org/blog/jetbrains-writerside/…

Citrix ADC Release 13.1 Build 54.29 (nCore, VPX, SDX, CPX, BLX) - 混合多云应用交付控制器

Citrix ADC Release 13.1 Build 54.29 (nCore, VPX, SDX, CPX, BLX) - 混合多云应用交付控制器Citrix ADC Release 13.1 Build 54.29 (nCore, VPX, SDX, CPX, BLX) - 混合多云应用交付控制器 Citrix ADC - 混合多云应用交付控制器 请访问原文链接:https://sysin.org/blog/citr…

Metasploit Pro 4.22.3-2024081901 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.3-2024081901 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.3-2024081901 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Aug 19, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。…