springboot使用mybatis

news2024/11/28 0:37:47

springboot使用mybatis

本文目录

    • springboot使用mybatis
      • 引入maven依赖
      • 新增数据库配置
      • 创建数据库表
      • 实体类
      • 编写mapper接口层
        • 通过xml文件
        • mapper中直接使用注解
      • 编写mapper.xml
        • IDEA创建mybatis的xml文件
        • parameterType
      • 启动类
      • controller调用

引入maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- SpringBoot web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- mybatis 支持 SpringBoot -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.51</version>
        </dependency>

新增数据库配置

server.port=8080

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demomybatis?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
spring.datasource.username=xx
spring.datasource.password=xx
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

mybatis.mapper-locations = classpath:mapping/*Mapper.xml

创建数据库表

Person数据库如下图

Address数据库如下图

实体类

@Data
public class Person {

    private String id;

    private String name;

}
@Data
public class Address {

    private String id;

    private String addrName;

}

编写mapper接口层

通过xml文件

@Mapper //表示这是Mybatis的mapper类
@Repository
public interface PersonMapper {

    List<Person> queryUserList();

    Person queryUserByID(String id);

    int addUser(Person person);

    int updateUser(Person person);

    int deleteUser(String id);

}

mapper中直接使用注解

@Mapper //表示这是Mybatis的mapper类
@Repository
public interface AddressMapper {

    @Select("SELECT * FROM address WHERE addrName = #{name}")
    Address findByName(@Param("name") String name);

    @Insert("INSERT INTO address VALUES (#{id}, #{addrName},)")
    int insert(@Param("id") String id, @Param("addrName") String addrName);
}

编写mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.PersonMapper">
    <select id="queryUserList" resultType="com.example.demo.Person">
        select * from person
    </select>

    <select id="queryUserByID" resultType="com.example.demo.Person">
        select * from person where id= #{id}
    </select>

    <insert id="addUser" parameterType="com.example.demo.Person">
        insert into person(id,name) values (#{id},#{name})
    </insert>

    <update id="updateUser" parameterType="com.example.demo.Person">
        update person set name=#{name} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="java.lang.String">
        delete from person where id=#{id}
    </delete>
</mapper>

IDEA创建mybatis的xml文件

File---->Settings

Editor---->File And Code Templates —>中间选中Files ----->点击+号,添加模板 ----->输入模板名字:Name:XML File.xml (name可以自定义) ------>后缀名extension:xml

在面板中间输入内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">

</mapper>

选中文件夹----->New-------->找到XML File,就可以创建xml文件了

parameterType

Mybatis的Mapper文件中的select、insert、update、delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型

启动类

在启动类里加上注解用于给出需要扫描的mapper文件路径@MapperScan

@SpringBootApplication
@MapperScan("com.example.demo")
public class DemoApplication {

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

}

controller调用

@CrossOrigin
@RestController
@RequestMapping("/define")
public class DemoController {

    @Autowired
    PersonMapper personMapper;

    @GetMapping("/getmybatis")
    public List<Person> getmybatis() {
        List<Person> res= personMapper.queryUserList();
        return res;
    }

    @GetMapping("/queryUserList")
    public List<Person> queryUserList() {
        List<Person> users = personMapper.queryUserList();
        return users;
    }

    @GetMapping("/queryUserByID")
    public Person queryUserByID() {
        Person user = personMapper.queryUserByID("2");
        return user;
    }

    @GetMapping("/addUser")
    public String addUser() {
        Person p = new Person();
        p.setId("4");
        p.setName("zzz");
        personMapper.addUser(p);
        return "增加用户完毕";
    }

    @GetMapping("/updateUser")
    public String updateUser() {
        Person p = new Person();
        p.setId("2");
        p.setName("zzz");
        personMapper.updateUser(p);
        return "修改用户完毕";
    }

    @GetMapping("/deleteUser")
    public String deleteUser() {
        personMapper.deleteUser("4");
        return "删除用户完毕";
    }

    @Autowired
    AddressMapper addressMapper;

    @RequestMapping("/addAddress")
    public int addUser(String userName, String age) {
        
        return addressMapper.insert(age,userName);
    }

    @RequestMapping("/getAddress")
    public Address getUserByName(String userName) {
        
        return addressMapper.findByName(userName);
    }
}

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

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

相关文章

视频转音频怎么转?来试试这三个方法

如今我们可以看到有一些人会把电影/电视变成听电影/电视&#xff0c;相信大家都会感觉很不可思议吧&#xff01;电影/电视不是用来看的吗&#xff1f;听就没办法享受到那种视觉上的震撼了&#xff0c;其实不然&#xff0c;听电影/电视也是一种别样的享受&#xff0c;特别是对有…

看完这篇还不懂MySQL的MVCC机制算我输

前言 MySQL中大名鼎鼎的MVCC机制想必大家都有所耳闻吧&#xff0c;虽然在平时MySQL使用过程中基本上用不到&#xff0c;但是面试中出场率十分高&#xff0c;而且作为架构师的你也是需要知道它的工作机制。那么你对MVCC机制了解多少呢&#xff1f;MVCC机制是用来干嘛的呢&#…

使用 Clion (cmake) 开发FreeRTOS

这里使用的是 f4071. 先用STM32CubeMX 建立一个可以运行的stm32项目&#xff0c;toolchain选择 SW4STM322. 官网下载源码www.freertos.org我这里下载的是FreeRTOSv202112.00.zip 解压缩后得到需要以下几个文件夹或档案FreeRTOS/Source下的所有的 .c 档案FreeRTOS/Source/includ…

m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着市场经济的发展和全球化&#xff0c;国内外企业面临着越来越残酷的市场竞争&#xff0c;要想赢得竞争&#xff0c;赢得市场&#xff0c;从事商品销售的单位必须在短时间内&#xff0c;以最低…

【图多预警】Pandas绘图函数总结

文章目录简介条形图折线图箱线图直方图饼图散点图和六边形分箱图简介 pandas中提供了plot函数用以绘图&#xff0c;并通过kind参数选择具体的图像类型。 method绘图类别method绘图类别line折线图[默认使用]area堆叠面积图bar纵向条形图barh横向条形图kde概率分布图density概率…

企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?

01、什么是间接采购&#xff1f; 通常&#xff0c;我们将采购分为直接物料和间接物料。 直接采购&#xff1a;用于产品生产及销售的物料与服务的购买&#xff0c;服务于外部客户&#xff0c;也叫生产性采购。如原材料、产品包装、物流服务等。直接采购无论是生产所需的原材料、…

backup (攻防世界)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 进入网址 解题工具: 浏览器? 问题解析: X老师忘记删除备份文件&#xff0c;他派小宁同学去把备份文件找出来,一起来帮小宁同学吧&#xff01; 先说一下备份文件 科普时间叕到 网站备份 分…

怎样录屏没有外界杂音?3个十分好用的方法,码住收藏!

在互联网时代&#xff0c;使用电脑娱乐、工作逐渐成为了日常生活的一部分。而其中&#xff0c;电脑录屏是经常使用的功能之一。不过对于电脑录屏领域不熟悉的小伙伴就会问了&#xff1a;“为什么录制的视频会有杂音&#xff0c;怎样录屏没有外界杂音&#xff1f;”别着急&#…

对于xshell连接不上虚拟机的一些解答

如果你发现你可以在虚拟机内ping通 之后&#xff0c;在你电脑dos下也可以ping通。 然而&#xff0c;还是发现你的xshell连接不上虚拟机。 这里使用ifconfig 我发现这个地址是在变化的&#xff0c;之前是129&#xff0c;现在是131&#xff0c;所以这样再到xshell&#xff0c;…

【Java面试】谈谈你对HashMap的理解(Map接口)

文章目录说一下 HashMap 的实现原理&#xff1f;HashMap在JDK1.7和JDK1.8中有哪些不同&#xff1f;HashMap的底层实现&#xff1f;HashMap的put方法的具体流程&#xff1f;HashMap的扩容操作是怎么实现的&#xff1f;HashMap是怎么解决哈希冲突的&#xff1f;能否使用任何类作为…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: rbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/rbegin/ 公有成员函数 <deque> std::deque::rbegin C98 reverse_iterator rbegin(); const_reverse_iterator rbegin() const; C11 reverse_iterator rbegin() noexcept; const_reverse_iterato…

类加载机制和类加载器

文章目录类加载机制为什么需要类加载类加载的时机主动使用——会触发类的初始化被动使用的例子关于接口的初始化类加载详细过程加载链接初始化类加载器类与类加载器,类的实例的关系回顾类的卸载类加载的基本特征类加载器的分类Java虚拟机自带的类加载器用户自定义类加载器Class…

web前端期末大作业 在线电影网页设计与制作 HTML+CSS+JavaScript仿叮当电影网页制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

【Elasticsearch】kibana 操作es文档详细总结

前言 在上一篇&#xff0c;分享了使用kibana如何对索引进行增删改查等操作&#xff0c;事实上在日常开发与运维中&#xff0c;操作索引毕竟是比较谨慎的事情&#xff0c;但是对于索引中文档的增删查改却是随处可见的&#xff0c;es对文档的操作不仅频繁&#xff0c;而且涉及到…

HTML+CSS一个简单的电影网页制作作业,学生个人html静态网页制作成品代码, html电影速递网

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

细说react源码中的合成事件

&#x1f495; 温馨提示: 下边是对React合成事件的源码阅读&#xff0c;全文有点长&#xff0c;但是&#xff01;如果你真的想知道这不为人知的背后内幕&#xff0c;那一定要耐心看下去&#xff01; 最近在做一个功能&#xff0c;然后不小心踩到了 React 合成事件 的坑&#xf…

【 web网页设计期末课程大作业】基于HTML+CSS+JavaScript智慧路灯综合管理系统

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

(附源码)计算机毕业设计Java宠物销售管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

PGL图学习之基于GNN模型新冠疫苗任务[系列九]

PGL图学习之基于GNN模型新冠疫苗任务[系列九] 项目链接&#xff1a;https://aistudio.baidu.com/aistudio/projectdetail/5123296?contributionType1 # 加载一些需要用到的模块&#xff0c;设置随机数 import json import random import numpy as np import pandas as pdimp…

叠氮荧光染料:Azide-FL-BDP|1379771-95-5|BDP FL N3叠氮

BDP FL叠氮化物是一种类似于BODIPY FL叠氮化物的荧光染料&#xff0c;是一种具有点击化学性质的荧光染料。该荧光团是硼二吡咯甲基类荧光染料的代表&#xff0c;在水环境中具有较高的量子产率。azide系列产品包括可用于进一步连接的azide-acid&#xff1b;azide-amine&#xff…