@[TOC](Mybatis plus無(wú)介紹快使用肺孤,CRUD增刪改查基本使用附源碼(一))
問(wèn)題背景
因?yàn)閙ybatis plus非常的流行始鱼,雖然平常mybatis generator也夠用了筐咧,但多會(huì)一個(gè)鸯旁,看別人的代碼就輕松一點(diǎn)
注意事項(xiàng):
- 官方網(wǎng)站:https://baomidou.com/
- 官方文檔:https://baomidou.com/pages/24112f/
- 可以自己創(chuàng)建工程,也可以下載源碼進(jìn)行參考
-
MyBatis-Plus在實(shí)現(xiàn)插入數(shù)據(jù)時(shí)量蕊,會(huì)默認(rèn)基于雪花算法的策略生成id铺罢,實(shí)體類entity屬性都使用對(duì)象,使用Long危融,不能使用long配喳,不然雪花算法會(huì)失效
Mybatis-plus無(wú)介紹快使用霞怀,CRUD增刪改查基本使用附源碼(一)
Mybatis-plus無(wú)介紹快使用备韧,自定義sql語(yǔ)句CRUD增刪改查附源碼(二)
Mybatis-plus無(wú)介紹快使用焙矛,自帶封裝service層的使用附源碼(三)
Mybatis-plus無(wú)介紹快使用,注解的使用(四)
Mybatis-plus無(wú)介紹快使用蛋勺,Wrapper條件構(gòu)造器的使用附源碼(五)
Mybatis-plus無(wú)介紹快使用瓦灶,分頁(yè)插件和樂(lè)觀鎖插件的使用附源碼(六)
Mybatis-plus無(wú)介紹快使用,枚舉變量的使用附源碼(七)
Mybatis-plus無(wú)介紹快使用抱完,多數(shù)據(jù)源的使用(八)
Mybatis-plus無(wú)介紹快使用贼陶,MybatisX自動(dòng)生成代碼插件的使用(九)
Mybatis-plus無(wú)介紹快使用,可繼承通用的基礎(chǔ)實(shí)體類(十)
建庫(kù)建表
1 打開Navicat運(yùn)行以下SQL腳本進(jìn)行建庫(kù)建表
CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
use `mybatis_plus`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主鍵ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年齡',
`email` varchar(50) DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2 插入幾條測(cè)試數(shù)據(jù)
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
項(xiàng)目創(chuàng)建
1 引入pom依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yg</groupId>
<artifactId>mybatis-plus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis-plus</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!--<scope>test</scope>-->
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2 使用IDEA連接數(shù)據(jù)庫(kù)
3 右鍵user選擇Scripted Extensions→Generate POJOs.groovy生成數(shù)據(jù)庫(kù)user實(shí)體類
4 刪除set和get,添加@Data注解
package com.yg.mybatisplus.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
5 創(chuàng)建mapper接口碉怔,集成com.baomidou.mybatisplus.core.mapper.BaseMapper可以使用增刪改查方法
package com.yg.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yg.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;
/**
* @Author suolong
* @Date 2022/6/2 17:25
* @Version 2.0
*/
@Repository
public interface UserMapper extends BaseMapper<User> {
}
6 application.yml配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://xxx/database?severTimezone=Asia/Shanghai&allowMultiQueries=true&autoReconnect=true&characterEncoding=UTF-8&useUnicode=true&useSSL=false
username: xxx
password: 123456
#生成sql日志打印烘贴,一般關(guān)閉
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
7 啟動(dòng)類
package com.yg.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.yg.mybatisplus.mapper") //掃描所有的mapper
@SpringBootApplication
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
8 測(cè)試CRUD增刪改查
package com.yg.mybatisplus;
import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author suolong
* @Date 2022/6/2 17:42
* @Version 2.0
*/
@SpringBootTest
public class MybatisPlusTest {
@Autowired
UserMapper userMapper;
@Test
void selectTest(){
//全查
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
/**
* 測(cè)試插入一條數(shù)據(jù)
* MyBatis-Plus在實(shí)現(xiàn)插入數(shù)據(jù)時(shí),會(huì)默認(rèn)基于雪花算法的策略生成id
*/
@Test
public void testInsert(){
User user = new User();
user.setName("Vz1");
user.setAge(211);
user.setEmail("vz@oz61.cn");
int result = userMapper.insert(user);
System.out.println(result > 0 ? "添加成功撮胧!" : "添加失斀白佟!");
System.out.println("受影響的行數(shù)為:" + result);
//1527206783590903810(當(dāng)前 id 為雪花算法自動(dòng)生成的id)
System.out.println("id自動(dòng)獲取" + user.getId());
}
/**
* 測(cè)試根據(jù)id刪除一條數(shù)據(jù)
*/
@Test
public void testDeleteById(){
int result = userMapper.deleteById(1533011356262625282L);
System.out.println(result > 0 ? "刪除成功芹啥!" : "刪除失敹屠搿!");
System.out.println("受影響的行數(shù)為:" + result);
}
/**
* 測(cè)試通過(guò)id批量刪除數(shù)據(jù)
*/
@Test
public void testDeleteBatchIds(){
List<Long> ids = Arrays.asList(1532349895093833729L,1533012537454157826L,1533012657583161345L);
int result = userMapper.deleteBatchIds(ids);
System.out.println(result > 0 ? "刪除成功墓怀!" : "刪除失斊馈!");
System.out.println("受影響的行數(shù)為:" + result);
}
/**
* 測(cè)試根據(jù)Map集合中所設(shè)置的條件刪除數(shù)據(jù)
*/
@Test
public void testDeleteByMap(){
//當(dāng)前演示為根據(jù)name和age刪除數(shù)據(jù)
//執(zhí)行SQL為:DELETE FROM user WHERE name = ? AND age = ?
Map<String,Object> map = new HashMap<>();
map.put("name","Vz1 ");
map.put("age",211);
int result = userMapper.deleteByMap(map);
System.out.println(result > 0 ? "刪除成功傀履!" : "刪除失斒洹!");
System.out.println("受影響的行數(shù)為:" + result);
}
/**
* 測(cè)試根據(jù)id修改用戶信息, 只修改改變的值, 其他信息保持原值
*/
@Test
public void testUpdateById(){
//執(zhí)行SQL為: UPDATE user SET name=?, age=?, email=? WHERE id=?
User user = new User();
user.setId(5L);
user.setEmail("Vz@sina.com");
int result = userMapper.updateById(user);
System.out.println(result > 0 ? "修改成功啤呼!" : "修改失斘悦亍呢袱!");
System.out.println("受影響的行數(shù)為:" + result);
}
/**
* 測(cè)試根據(jù)id查詢用戶數(shù)據(jù)
*/
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
/**
* 根據(jù)多個(gè)id查詢用戶數(shù)據(jù)
*/
@Test
public void testSelectBatchIds(){
//執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
List<Long> ids = Arrays.asList(1L,2L,3L);
List<User> users = userMapper.selectBatchIds(ids);
users.forEach(System.out::println);
}
/**
* 根據(jù)Map所設(shè)置的條件查詢用戶
*/
@Test
public void testSelectByMap(){
//執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE age = ?
Map<String,Object> map = new HashMap<>();
map.put("age",18);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
}
9 項(xiàng)目目錄
總結(jié)
快使用就是查看CRUD增刪改查怎么用的
作為程序員第 149 篇文章官扣,每次寫一句歌詞記錄一下,看看人生有幾首歌的時(shí)間羞福,wahahaha ...