首页 > 其他分享 >MyBatisPlus快速上手

MyBatisPlus快速上手

时间:2023-03-27 18:33:15浏览次数:54  
标签:MyBatisPlus int id user MyBatis password 快速 public

ORM介绍

  • ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。
  • ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。
  • ORM框架的本质是简化编程中操作数据库的编码。
    image

MyBatis-Plus 介绍

  • MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。
  • MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POO (Plain Ordinary Java Object, 普通的Java对象)与数据库中的表和字段进行映射关联。
  • MyBatis-Plus是一个 MyBatis 的增强工具,在MyBatis 的基础上做了增强,简化了开发。

MyBatis注解

image

使用MyBatis-Plus

  1. 添加依赖
    <!--   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>
    	<!--     数据连接池 druid     -->
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>druid-spring-boot-starter</artifactId>
    		<version>1.1.20</version>
    	</dependency>
    
  2. 全局配置
    
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driver-class-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
    server.port=8088
    
  3. 在启动类下添加注解
//扫描器,告诉主类扫描哪个包
@MapperScan("com.example.mpdemo.mapper")
  1. 在主包下建一个mapper包,用来存放数据库相关的操作
  2. 在主包下建一个控制器包controller
  3. 在主包下建一个entity包,用来放实体类
  4. 演示功能
    • 在entity包下建一个User
      public class User {
      	private int id;
      	private String username;
      	private int password;
      
      	public void setId(int id) {
      		this.id = id;
      	}
      
      	public void setUsername(String username) {
      		this.username = username;
      	}
      
      	public void setPassword(int password) {
      		this.password = password;
      	}
      
      	public int getId() {
      		return id;
      	}
      
      	public String getUsername() {
      		return username;
      	}
      
      	public int getPassword() {
      		return password;
      	}
      
      	@Override
      	public String toString() {
      		return "User{" +
      				"id=" + id +
      				", username='" + username + '\'' +
      				", password=" + password +
      				'}';
      	}
      }
      
    • 在controller包下建一个UserController
      @RestController
      public class UserController {
      
      //使用UserMapper
      //注解,自动注入userMapper接口
      @Autowired
      private UserMapper userMapper;
      
      //查询所有用户
      //查询的用户是一个或多个,所以返回一个List
      @GetMapping("/user")
      public List query() {
      	List<User> list = userMapper.find();
      	System.out.println(list);
      	return list;
      }
      
      //添加用户
      @PostMapping("/user")
      public String save(User user) {
      	userMapper.insert(user);
      	int i = userMapper.insert(user);
      	System.out.println(user);
      	if (i > 0) {
      		return "插入成功";
      	}
      	else {
      		return "插入失败";
      	}
      }
      }
      
    • 在mapper包下建一个UserMapper接口(声明mapper接口,一般命名:查询的表名+Mapper)
      //加注解,表示这是一个Mapper组件
      @Mapper
      // 类名要和表名保持一致
      public interface UserMapper {
      	//查询所有用户
      	@Select("select * from user")
      	public List<User> find();
      
      	//添加用户
      	@Insert("insert into user values (#{id}, #{username}, #{password})")
      	public int insert(User user);
      
      	//删除用户
      	@Delete("delete from user where id=#{id}")
      	public int delete(int id);
      }
      
      Spring Boot项目它会自动实例化这个UserMapper,它会帮我们去管理UserMapper的实例,其内部是通过动态代理的方式帮我们生成一个实现类并实现这个接口,再帮我们实现这个数据库的查询方法,所以只要写上@Mapper注解即可,其余功能Mybatis和Spring Boot来完成。使用就在控制器下注入UserMapper即可。

使用MyBatisPlus

使用MybatisPlus的话就不用自己写查询语句

//继承了BaseMapper后这些方法都不用手写
//他会根据填入的类找到对应的表来进行增删改查,这里是User类
// 类名要和表名保持一致
public interface UserMapper extends BaseMapper<User> {

}

查询列表的方法由List<User> list = userMapper.find();变成
List<User> list = userMapper.selectList(null);
selectList()里需要填写查询条件,没有则填写null。
别的方法基本上命名一样无需修改。

一些注解

  1. @TableName
  • 如果表名和类名不一样,可以加一个注解。
    例如:表名是t_user
    @TableName("t_user")
    public class User {
    ...
    }
    
  1. @TableId
  • 通过TableId告诉其是一个主键,类型是自增的,这样添加数据的时候不用传id,它会自动帮你填入自增的id。
    @TableId(type= IdType.AUTO)
    
    image
  1. @TableField
  • 当表里的字段名和类里的属性名成不一致时,可以加一个注解。
    例如字段名是nickname,属性名是name
    @TableField("nickname")
    private String name;
    

具体使用细节可以看官方文档:MyBatis-Plus注解

  • ps: MyBatisPlus中,类如果用小驼峰命名,数据库对应的字段要用下划线的形式,例如:
    studentId——>student_id

MyBatis多表查询及分页查询

标签:MyBatisPlus,int,id,user,MyBatis,password,快速,public
From: https://www.cnblogs.com/cloud0-0/p/17262482.html

相关文章

  • SAE+云效,10分钟快速打通CI/CD流水线
    本实验将带大家亲手在10分钟内从0开始搭建一套CI/CD流水线,体验自动化发布的神奇之处。摒弃传统应用构建部署流程中的繁琐步骤和各种旁路系统,通过阿里云SAE+云效的组合可以......
  • 滚动轴承故障诊断MATLAB程序:快速谱峭度、谱峭度+包络谱分析
    滚动轴承故障诊断MATLAB程序:快速谱峭度、谱峭度+包络谱分析YID:17100643891920088......
  • Qt 6.5快速安装(Windows)
     前言本文仅适用于初学者参考!!!如有错误和疑问请指出安装步骤1.进入  Indexof/qt/archive/online_installers/|清华大学开源软件镜像站|TsinghuaOpenSource......
  • 【JavaScript快速排序算法】不同版本原理分析
    说明快速排序(QuickSort),又称分区交换排序(partition-exchangesort),简称快排。快排是一种通过基准划分区块,再不断交换左右项的排序方式,其采用了分治法,减少了交换的次数。它的......
  • 如何快速体验ChatGPT-4模型
    OpenAI免费版基于Gpt3.5,无法使用最新发布的GPT-4模型,必须开通ChatGPTPlus。但是OpenAI不但屏蔽了中国的IP地址,连国内的Visa信用卡也一同屏蔽,即使你想要付费,......
  • 【fastweixin框架教程1】一分钟快速搭建微信公众平台JAVA服务器
     目前网上有很多,一分钟微信公众平台教程,但很少有快速搭建微信公众平台服务器教程。 本文以fastweixin框架作为基础,以微信公众平台企业号作为目标,快速搭建微信公众平台服......
  • SpringCloud快速入门及详解
    一、SpringCloud简介 SpringCloud是一种用于构建企业级应用程序的框架,它是基于SpringFramework构建的。SpringCloud通过提供集成的组件来简化微服务应用程序的开发,这......
  • Spring快速入门及详解
    一、Spring简介1.介绍 Spring是一个开源框架,它的设计目标是用于解决企业级应用开发的复杂性和困难性。Spring框架采用了依赖注入(DI)和面向切面编程(AOP)两种基本的编程......
  • PowerJob 快速上手 调度器 单实例 单机常规部署
    一、官方资料语雀文档:https://www.yuque.com/powerjob/guidence/intro二、拉取代码,调度器配置信息修改及日志存放路径修改1、介绍2、application配置文件修改这里主......
  • 如何快速实现数据库读写分离
    实现读写分离可以使用AOP(面向切面编程)思想,通过划分事务的读写属性,将其分别交由读写数据库实例来处理。下面是实现读写分离的代码示例:```using  System;using  System.L......