springboot学习笔记(四)

本节笔记主要是MybatisPlus的快速上手笔记。

                        1.ORM介绍

                        2.MybatisPlus介绍

                        3.MybatisPlus CRUD操作

1.ORM介绍:

        之前学习过Django和mangodb,所以对ORM有一定的了解,简单来说ORM(Object Relational Mapping 对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。

        ORM通过使用描述对象和数据库之间的映射的元数据将程序中的对象自动持久化到关系数据库中。

        ORM框架的本质是简化变成中操作数据库的编码。

2.MybatisPlus介绍

MyBatis是一款优秀的数据持久层的ORM框架,被广泛地应用于应用系统。

Mybatis能够非常灵活地实现动态SQL,可以使用XML或者注解配置和映射原生信息,能够轻松地将JAVA的POJO与数据库中的表和字段进行映射关联。

Mybatis-Plus是一个Mybatis的增强工具,在Mybatis的基础上做了增强,简化了开发。

a.添加依赖

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>
         <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.20</version>
        </dependency>

b.全局配置:

spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-calss-name = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

c.添加@MapperScan注解:

package com.example.demo.mpdemo;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.demo.mpdemo")
public class MpdemoApplication {
	public static void  main(String[] args) {
		SpringApplication.run(MpdemoApplication.class, args);
		
	}

}

3.MybatisPlus CRUD操作

a.编写CRUD操作

package com.example.demo.mpdemo;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.example.demo.mpdemo.User;

@Mapper
public interface UserMapper {
//	@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
//	int add(User user);
	@Select("select * from user")
	public List<User> findall();
	@Update("update user set username=#{username},password=#{password},birthday=#{birthday} where id =#{id}")
	public int update(User user);
	@Delete("delete from user where id=#{id}")
	public int delete(int id);
	@Select("select * from user where id=#{id}")
	public User findById(int id);
}

b.编写Controller

package com.example.demo.mpdemo;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;



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

	@GetMapping("/usermp/{id}")
	public Userquery(@PathVariable int id) {
		User stringDemo = userMapper.findById(id);
		System.out.println(stringDemo.toString());
		return stringDemo;
	}
	@PostMapping("/usermp/{id}")
	public String update(User user) {
		userMapper.update(user);
		return "更新用户";
	}

	@DeleteMapping("/usermp/{id}")
	public String delete(@PathVariable int id) {
		userMapper.delete(id);
		return "删除用户";
	}
	@GetMapping("/usermp/findAll")
	public List<User> queryAll() {
		List<User> stringDemo = new ArrayList<User>();
		stringDemo = userMapper.findall();
		return stringDemo;
	}
	
}

User代码:

package com.example.demo.mpdemo;

public class User {
	private int id;
	private String username;
	private String password;
	private String birthday;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + ", birthday=" + birthday + "]";
	}

}

c.事先在Mysql数据库中编写了几条数据:

d.启动Springboot:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

seata的个人使用

seata的使用 1.file.conf 的配置修改 4. mode "db" -- 修改数据模型 32. user "root" -- 设置自己的数据库名 33. password "root" -- 自己的数据库密码 2.registry.conf的配置修改 registry 注册中心要配置 3. type "nac…

了解C++工作机制

基于hello.cpp对C的运行进行一个初步认识&#xff0c;并介绍国外C大佬Cherno常用的项目结构和调试Tips C是如何工作的 C工作流程1.实用工程&#xff08;project&#xff09;结构&#xff08;1&#xff09;Microsoft Visual Studio2022新建项目后&#xff0c;自动生成的原始文件…

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试&#xff1a;通过使用自动化构建工具和自动化测试套件&#xff0c;持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题&#xff0c;并及早…

软件测试实现Finddler的手机抓包过程

Fiddler的手机抓包过程 1、启动Fiddler 打开菜单栏中的 Tools > Fiddler Options&#xff0c;打开“Fiddler Options”对话框&#xff1a; 2、在Fiddler Options”对话框 切换到“Connections”选项卡&#xff0c;然后勾选“Allow romote computers to connect”后面的复选…

爱芯派pro通过无线网卡rtl8188eu连接热点

爱芯派pro通过无线网卡rtl8188eu连接热点 爱芯派pro目前的底板的pcie的复位有问题&#xff0c;所以pcie接口无法挂载上去&#xff0c;所以自己购买的rtl8822网卡也用不了&#xff0c;然后想起来自己还有正点原子的rtl8188eu网卡&#xff0c;但是没有和工作人员进行摸索后才知道…

基于单片机的火灾报警器 (论文+源码)

1.系统设计 本系统由火灾检测模块、A/D转换模块、信号处理模块、声光报警模块和灭火装置模块组成。火灾检测模块由温度检测和烟雾检测构成&#xff0c;其温度传感器选用DS18B20&#xff0c;烟雾传感器选用MQ-2烟雾传感器。A/D转换模块选用常用的模数转换芯片ADC0832。声光报警模…

做一个wiki页面是体验HTML语义的好方法

HTML语义&#xff1a;如何运用语义类标签来呈现Wiki网页 在上一篇文章中&#xff0c;我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么&#xff0c;哪些场景适合用到语义类标签呢&#xff0c;又如何运用语义类标签呢&#xff1f; 不知道你还记不记得在大…

【深入使用】PHP的PDO 基本使用

前言&#xff1a; PDO&#xff1a;数据库抽象层 简介&#xff1a;PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口&#xff0c;PDO解决了数据库连接不统一的问题。是PHP 5新加入的一个重大功能 【为什么要使用PDO】&#xff1f; PDO是PHP5新加入的一个重大功能&a…

中国社科院与新加坡新跃社科联合培养工商管理博士

全球经济正在经历由科技进步与创新、政治和人口的剧烈变化所带来的巨大不确定性与挑战。企业的领导者和管理者需要发展出战略性思维和全球洞察力以便面对越来越大的经济波动。中国社科院与新加坡新跃社科联合培养工商管理博士项目的训练能够让学生在一个企业和组织的改变和发展…

Attention-Challenging Multiple Instance Learning for Whole Slide Image(ACMIL)

Attention-Challenging Multiple Instance Learning for Whole Slide Image&#xff08;ACMIL&#xff09; 问题&#xff1a; predictive instances 与 instances有什么区别&#xff1f; 0. Abstract 针对领域&#xff1a;MIL的过拟合 现有问题&#xff1a;当前的MIL方法只…

mt5和mt4交易软件有什么区别?

MetaTrader 4&#xff08;MT4&#xff09;和MetaTrader 5&#xff08;MT5&#xff09;是两种广泛使用的外汇和金融市场交易平台&#xff0c;由MetaQuotes公司开发。尽管它们都是外汇交易的常见选择&#xff0c;但在功能和特性上存在一些区别。以下是MT4和MT5之间的主要区别&…

高通平台开发系列讲解(USB篇)adb应用adbd分析

沉淀、分享、成长,让自己和他人都能有所收获!😄 在apps_proc/system/core/adb/adb_main.cpp文件中main()函数会调用adb_main()函数,然后调用uab_init函数 在uab_init()函数中,会创建一个线程,在线程中会调用init_functionfs()函数,利用ep0控制节点,创建ep1、ep2输…

Lombok-入门(效率开发)

文章目录 Lombok去Autowired注解valNonNull-空值校验Cleanup-自动关闭资源Getter/SetterToStringEqualsAndHashCode~Constructor-构造函数DataValue-不可变类Builder-使用建造者模式来创建对象Accessors(chain true)-开启链式编程Accessors(fluent true)-开启链式编程&#x…

工作流引擎的架构设计与对比

所谓工作流引擎是指 workflow 作为应用系统的一部分&#xff0c;并为之提供对各应用系统有决定作用的&#xff0c;根据角色、分工和条件的不同决定信息传递路由、内容等级 等核心解决方案。工作流引擎可以灵活地配置工作流程&#xff0c;并且可以自动化的根据配置进行状态变更和…

基于ssm生鲜配送系统设计及实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对生鲜配送信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

Floyd求最短路(Floyd算法)

参考&#xff1a;约会怎么走到目的地最近呢&#xff1f;一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路&#xff0c;公路上的数字表示这条公路的长短&#xff0c;并且路是单向的&#xff0c;现在要求我们求出任意两个城市之间的最短路程&#xff0c;也就是求任意两个点之…

vscode颜色主题插件one dark Pro安装

1.点击扩展图标→搜索“one dark Pro”→第一个点击安装 2.安装成功后&#xff0c;不要忘了点击设置颜色主题 3.看下效果&#xff1a;

UCloud + 宝塔 + PHP = 个人网站

UCloud 宝塔 PHP 个人网站 文章目录 1.概要2.UCloud使用教程&#xff08;租用云端服务器&#xff09;3.宝塔使用教程&#xff08;免费服务器运维面板&#xff09;4.总结 1.概要 今天主要是想教大家如何将在网络上白嫖到源码&#xff08;特指PHP源码!!!&#xff09;搭建运行…

在mt4上怎么查看CHFJPY品种的合约细则?

在MetaTrader 4 (MT4) 上查看CHFJPY品种的合约细则的方法如下&#xff1a; FXCM福汇官方个人注册登录流程 1.打开MT4软件并登录到您的交易账户。 2.在MT4界面的"市场观察"窗格中&#xff0c;找到并右键单击"CHFJPY"货币对。如果您无法找到"市场观察…

AI毕业设计生成器(可生成java或python系统源码),使用Tensorflow训练的AI代码大模型

这是一个辅助生成计算机毕业设计的工具&#xff0c;可以自动完成毕业设计的源码。它基于几百个github上面开源的java和python项目&#xff0c;运用tengsorflow技术&#xff0c;训练出了AI大模型。基本实现了计算机毕业设计生成器&#xff0c;能够初步生成Java或python基本源码。…