springboot之MybatisPlus

news2024/11/23 3:43:44

文章目录

  • 一、ORM
  • 二、mybatis实际操作
  • 三、mybatis-plus

一、ORM

简单来说ORM就是一个能够帮我们把java中Bean类映射到数据库中。

在这里插入图片描述

使用mybatis-plus。

  • 配置架包
<!--      MyBatisPlus依赖   -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
<!--       mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

<!--       数据连接池增加数据查询效率-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.20</version>
        </dependency>

下载以后需要配置application.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/"你的数据库名"?useSSL=false&characterEncoding=utf8
spring.datasource.username="你的账号"
spring.datasource.password="你的密码"
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

在启动函数增加注解@MapperScan("Mapper的路径")
在这里插入图片描述

相关注解
在这里插入图片描述

二、mybatis实际操作

  • 首先创建好对应的数据库
create database hello;

CREATE TABLE User (  
    id INT PRIMARY KEY,  
    username VARCHAR(255) NOT NULL,  
    password VARCHAR(255) NOT NULL,  
    birthday VARCHAR(10)  -- 假设日期格式为 YYYY-MM-DD,长度为10  
);


INSERT INTO User (id, username, password, birthday) VALUES  
(1, 'Alice', 'password123', '1990-01-01'),  
(2, 'Bob', 'pass456word', '1992-05-10');
  • 在mapper下创建一个基于Bean为主的mapper接口!
    UserMapper

  • 在UserMapper里面声明方法。记得加@Mapper

@Mapper
public interface UserMapper {

    //查询所有用户
    @Select("select * from user")
    public List<User> find();
}
  • 在controller写查询接口,其中要使用刚才在UserMapper写好的接口。
	//使用Autowired注解注入接口
	@Autowired
    private UserMapper userMapper;
	//使用与数据库字段对应的Bean接受数据User。
    @GetMapping("/user")
    public List query(){
        List<User> list = userMapper.find();
        System.out.println(list);
        return list;
    }
  • User的代码
	private int id;
    private String username;
    private String password;
    private String birthday;
	
	//get 
	//set
	//使用鼠标右键generate生成

调用我们的写好的query()接口,就能在控制台看到我们的查询结果了。
在这里插入图片描述
在这里插入图片描述
一些方法的参考
在这里插入图片描述
controller文件如下

@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List query(){
        List<User> list = userMapper.find();
        System.out.println(list);
        return list;
    }
    @PostMapping("/user/insert")
    public String insert(User user){
        int i = userMapper.insert(user);
        if (i > 0){
            return "successful";
        }
        else{
            return "failed";
        }
    }

    @DeleteMapping("/user/delete/{id}")
    public String delete(@PathVariable int id){
        int j = userMapper.delete(id);
        if (j > 0){
            return "delete successfully";
        }else{
            return "delete fail";
        }
    }
	
	//这个还有点问题,还要改
    @PutMapping("/user/update/{id}")
    public String update(@PathVariable int id,@PathVariable User user){
        System.out.println(id);

        int k = userMapper.update(user);
        if (k > 0){
            return "update successfully";
        }else{
            return "update fail";
        }

    }
}

三、mybatis-plus

Mapper文件如下

@Mapper
public interface UserMapper2 extends BaseMapper<User> {

}

Controller文件如下

@RestController
public class UserController2 {

    @Autowired
    private UserMapper2 userMapper2;

    @GetMapping("/user2")
    public List query(){
        List<User> list= userMapper2.selectList(null);
        System.out.println(list);
        return list;
    }

    @PostMapping("user2/insert")
    public String insert(User user){
        int i = userMapper2.insert(user);
        if (i > 0){
            return "successful";
        }
        else{
            return "failed";
        }
    }
}
  • 如果Bean名和表明不一致,可以通过增加注解设定对应的表@TableName

在这里插入图片描述

  • 指定列自增

在这里插入图片描述

  • 将Bean类中的属性映射到表列,如果不一致。
    在这里插入图片描述

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

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

相关文章

谷粒商城实战(008 缓存)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第151p-第p157的内容 简介 数据库承担落盘&#xff08;持久化&#xff09;工作 拿map做缓存 这种是本地缓存&#xff0c;会有一些问题 分布…

注解——自定义注解、元注解、开发Junite框架

官方注解 自定义的注解 元注解 指的是&#xff1a;修饰注解的注解 常用的两个元注解——Target\ Retention 注解的解析 应用场景&#xff1a;开发Junit框架

KH-IPEX-K501-29

KH-IPEX-K501-29品牌: kinghelm(金航标)封装: SMD 描述: 1代

Linux安装Weblogic保姆级教程

文章目录 前言一、Weblogic安装包下载二、安装JDK三、Weblogic安装1.创建Linux用户2.创建weblogic的安装目录3.上传weblogic的安装包4.解压缩5.修改 /opt/weblogic 目录的所有权6.创建 oraInst.loc 文件7.创建 wls.rsp 响应文件8.切换用户9.静默安装weblogic10.切换到root用户1…

【闲聊】-网页划词翻译插件

英文之痛 作为程序猿&#xff0c;常常需要接触外文网站&#xff0c;以前很痛苦&#xff0c;现在大模型时代有很多智能工具可以直接翻译&#xff0c;翻译的虽然越来越好&#xff0c;但是还是不如直接看英文能理解本义&#xff0c;相信我&#xff0c;看翻译的理解和看原文的理解…

Folder Icons for Mac v1.8 激活版文件夹个性化图标修改软件

Folder Icons for Mac是一款Mac OS平台上的文件夹图标修改软件&#xff0c;同时也是一款非常有意思的系统美化软件。这款软件的主要功能是可以将Mac的默认文件夹图标更改为非常漂亮有趣的个性化图标。 软件下载&#xff1a;Folder Icons for Mac v1.8 激活版 以下是这款软件的一…

【mysql 第3-10条记录怎么查】

mysql 第3-10条记录怎么查 在MySQL中&#xff0c;如果你想要查询第3到第10条记录&#xff0c;你通常会使用LIMIT和OFFSET子句。但是&#xff0c;需要注意的是&#xff0c;LIMIT和OFFSET是基于结果集的行数来工作的&#xff0c;而不是基于记录的物理位置。这意味着它们通常与某种…

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Servi…

鸿蒙实战开发-如何使用Stage模型卡片

介绍 本示例展示了Stage模型卡片提供方的创建与使用。 用到了卡片扩展模块接口&#xff0c;ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口&#xff0c;ohos.app.form.formInfo 。 卡片提供方相关接口的能力接口&#xff0c;ohos.app.form.for…

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 &#xff08;有时候不小心短接VCC和GND&#xff0c;芯片会锁住&#xff0c;可以BOOT0拉高试试&#xff08;用跳线帽接&#xff09;&#xff09; 五、最小系统原理图 可用于PCB设计

IP SSL的应用与安装

IP SSL&#xff0c;即互联网协议安全套接字层&#xff0c;它是一种为网络通信提供安全及数据完整性的安全协议。在网络传输过程中&#xff0c;IP SSL可以对数据进行加密&#xff0c;这样即便数据在传输途中被截取&#xff0c;没有相应的解密密钥也无法解读内容。这一过程如同将…

QT子窗口关闭时自动释放及注意事项

先说方法&#xff0c;很简单&#xff0c;有如下API函数可用&#xff1a; testDialog->setAttribute( Qt::WA_DeleteOnClose, true )&#xff1b; 他的官方解释如下&#xff1a; 最后&#xff0c;说一个注意事项&#xff1a; 最近写python程序比较多&#xff0c;回过头来&a…

Redis分布式锁的优化

分布式锁 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的实现 分布式锁的核心是实现多进程之间互斥&#xff0c;而满足这一点的方式有很多&#xff0c;常见的有三种&#xff1a; MySQLRedisZookeeper互斥利用mysql本身的互斥锁机制利…

韩顺平Java | C21网络编程

1 网络的相关概念 ip地址的组成&#xff1a;网络地址 主机地址 A类&#xff1a;0 ~ 2^7-1 0 ~ 127 B类&#xff1a;128 ~ 1282^6-1 128 ~ 191 C类&#xff1a;192 ~ 1922^5-1 192 ~ 223 D类&#xff1a;224 ~ 2242^4-1 224 ~ 239 E类&#xff1a;240 ~ 2402^3-1 240 ~ 2…

XenCenter 2024 导出虚拟机

选择导出 选择需要导出的虚拟机 导出位置&#xff0c;导出格式&#xff0c;名称 EULA 文档&#xff0c;根据自己需求配置 OVA是否需要加密验证&#xff0c;自己需要看&#xff0c;是否单独的OVA 确认导出配置&#xff0c;等待导出完成。 本地目录查看导出完成

批次号字符串的定制格式化处理

碰到个处理批次号的需求&#xff0c;处理成各种特殊的格式&#xff0c;方法还比较粗糙&#xff0c;可以优化&#xff0c;这里只做个记录。不仅仅适用于日期的格式化处理&#xff0c;特殊的字符规则都可以使用。 通过这个方法&#xff0c;维护成 "yyMMddpkx"这种特殊…

vue3中怎么点击按钮就上传文件

<el-button text type"primary" click"importBillExcel(row)">导入账单</el-button> // 导入客户账单Excel表 const importBillExcel (row) > {let input document.createElement(input)input.type fileinput.accept .pdf, .png, .zip…

基于知识图谱的跨项目安全缺陷报告预测方法

源自&#xff1a;软件学报 作者&#xff1a;郑炜, 刘程远, 吴潇雪, 陈翔, 成婧源, 孙小兵, 孙瑞阳 “人工智能技术与咨询” 发布 摘 要 安全缺陷报告可以描述软件产品中的安全关键漏洞. 为了消除软件产品的安全攻击风险, 安全缺陷报告(security bug report, SBR)预测越来越…

QT - 日志:qDebug/qInfo/qWarning/qCritical

篇一、日志打印函数 头文件&#xff1a; #include <QDebug> 代码&#xff1a;qDebug()<<"hello world!"; 其他打印级别&#xff1a; qInfo(): 普通信息 qDebug(): 调试信息 qWarning(): 警告信息 qCritical(): 严重错误 qFatal(): 致命错误 1. qDebug…

认识什么是Webpack

目录 1. 认识Webpack 1.1. 什么是Webpack?&#xff08;定义&#xff09; 1.2. 使用Webpack 1.2.1. 需求 1.2.2. 步骤 1.3. 入口和出口默认值 1.3.1. 需求代码如下 2. 修改Webpack打包入口和出口 2.1. 步骤&#xff1a; 2.2. 注意 3. Webpack自动生成html文件 3.1.…