[å¤é ]满æ忧æï¼ä¸å¦å å¹²å说ï¼ä¸æ³¨Javaä»åºç¡å°æ¶æçç¡¬æ ¸å¹²è´§å享ï¼
ä¸ä¸ªäº§åçè³äºä¸ä¸ªä¼ä¸æéè¦çå°±æ¯æ°æ®ï¼ç°å¨ç£çä»·æ ¼ä¹å¹¶ä¸è´µï¼ä¼ä¸ç§ç¨äºæå¡å¨çææ¬ä¹å¨ä¸éï¼å¨å¾æ©ä¹åä¼ä¸å°±å·²ç»éæ©ç¨æ·å¨å é¤æ°æ®æ¶å¹¶ä¸ä¼çæ£çä»ç£çä¸ç§»é¤ï¼èæ¯é»è¾ä¸çä¸ç§å é¤ï¼å³ç¨æ·æ¥è¯¢ä¸å°ï¼ä»¥æ¤æ¥åç°å使ç¨æ°æ®çæªæ¥æè 说å©ä½ä»·å¼ãæ¯å¦æ¸¸æ产åä¸å¸¸è§çå è´¹å é¤è§è²åæ¶è´¹æ¢å¤è§è²[ç][ç][ç]
æ¬æ就以mybatis-plus为åºç¡å®ç°é»è¾å é¤
ä¸ãåå¤ç¯å¢
å¨ä»ç»mybatis-plusé»è¾å é¤åèªå¨å¡«å æ¶é¦å æ建项ç®ååå¤ä¸å¼ æ°æ®è¡¨ï¼æ¤æ¡ä¾éè¿springboot+mysql+mybatis-pluså®ç°
1.1ãå建æ°æ®è¡¨
CREATE TABLE `tb_student` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'å¦çID',
`class_id` int(11) NOT NULL COMMENT 'ç级ç¼å·',
`dorm_id` int(11) DEFAULT NULL COMMENT '宿èç¼å·',
`major_id` int(11) DEFAULT NULL COMMENT 'ä¸ä¸id',
`stu_no` varchar(50) NOT NULL COMMENT 'å¦å·',
`stu_name` varchar(50) NOT NULL COMMENT 'å¦çå§å',
`stu_sex` char(1) NOT NULL DEFAULT '0' COMMENT 'ç¨æ·æ§å«ï¼0ç· 1女 2æªç¥ï¼',
`stu_mobile` varchar(20) DEFAULT NULL COMMENT 'ææºå·',
`status` char(1) NOT NULL COMMENT 'å¦çç¶æï¼0æ£å¸¸ 1请å 2ä¼å¦ 3éå¦ 4æ¯ä¸ï¼',
`is_delete` BINARY(1) DEFAULT '0' COMMENT 'å é¤æ å¿ï¼0æªå é¤ 1å·²å é¤ï¼',
`create_id` bigint(11) not null COMMENT 'å建è
',
`update_id` bigint(63) not null COMMENT 'ä¿®æ¹è
',
`create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´',
`update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´',
`remark` varchar(500) DEFAULT NULL COMMENT 'å¤æ³¨',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='å¦çä¿¡æ¯è®°å½';
1.2ãå建maven项ç®
å¨IDEAä¸å建ä¸ä¸ªmaven项ç®ï¼å¼å ¥springbootãmysqlãmybatis-plusä¾èµå³å¯
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.7.12</version>
</parent>
<groupId>com.stt</groupId>
<artifactId>stt-mybatis-plus</artifactId>
<version>1.0-SNAPSHOT</version>
<description>Mybatis-plusææ¯æ </description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.7.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
</project>
1.3ãapplication.ymlé ç½®æ件
å¨springbooté ç½®æ件ä¸é ç½®æ°æ®åº
# æ°æ®åºé
ç½®
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
username: root
password: Shitian123456
# mybatis-plusé
ç½®
mybatis-plus:
configuration:
# é
ç½®è¾åºsqlå°æ§å¶å°
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
1.4ãå建å®ä½ç±»
package com.stt.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author ç³æ·»
* å¦çå®ä½ç±»
*/
@Data
// æ å°çæ°æ®è¡¨å称
@TableName(value = "tb_student")
public class Student implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
private Integer classId;
private Integer dormId;
private Integer majorId;
private String stuNo;
private String stuName;
private Integer stuSex;
private String stuMobile;
private Integer status;
private Integer isDelete;
private Long createId;
private Long updateId;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private String remark;
}
1.5ãå建Mapper
Mapperæ¥å£
public interface StudentMapper extends BaseMapper<Student> {
}
Mapperæ å°æ件
<?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.stt.mapper.StudentMapper">
</mapper>
1.6ãå建Service
serviceæ¥å£
public interface IStudentService extends IService<Student> {
}
serviceå®ç°ç±»
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements IStudentService {
}
1.7ãspringboot项ç®ä¸»ç±»
å¨è¯¥ç±»ä¸æ³¨ä¸mapperæ«æ
@SpringBootApplication
// æ«æmapper
@MapperScan("com.stt.mapper")
public class MyBatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MyBatisPlusApplication.class,args);
}
}
æ¤æ¶åå¤å·¥ä½å®æï¼å³å建æ°æ®è¡¨åspringboot项ç®
äºãé»è¾å é¤
é»è¾å é¤æ¯ä¸ºäºæ¹ä¾¿æ°æ®æ¢å¤åä¿æ¤æ°æ®æ½å¨ä»·å¼çä¸ç§æ段ï¼å³å½ç¨æ·ä¸éè¦æä¸ä¸ªæ°æ®æ¶å°±å¸æå é¤æï¼æ¤æ¶æç©çå é¤åé»è¾å é¤ä¸¤ç§æ¹æ¡ã
- ç©çå é¤ï¼å°æ°æ®çå®çä»æ°æ®åºãç£çãä¸å é¤æ
- é»è¾å é¤ï¼æ°æ®å¹¶æ²¡æçæ£å é¤ï¼è¿å¨æ°æ®åºãç£çãä¸ä¸ªä¿åï¼åªæ¯å¨æ¥è¯¢æ¶è¿æ»¤æ被å é¤çæ°æ®ï¼å¯¹ç¨æ·æ¥è¯´å°±æ¯å é¤æäº
2.1ãå®ç°åç
ç©çå é¤éç¥æ°æ®åºæ§è¡å é¤æä½ãå³å é¤çsql
-- å é¤id为1çå¦ç
DELETE FROM tb_student WHERE id = 1
é»è¾å é¤çå®ç°æ¹å¼æ¯å¨æ°æ®è¡¨ä¸æ·»å ä¸ä¸ªè¡¨ç¤ºæ¯å¦å é¤çå段ï¼æ³¨æ该å段ä¸è¦åæ°æ®çç¶æå段è¦åã
æ¯å¦å¦çæå¾å¤ç¶æï¼æ£å¸¸ï¼è¯·åï¼ä¼å¦ï¼éå¦ãå¯ä»¥ä½¿ç¨statuså段表示ï¼
è该å¦ç被å é¤ï¼åå¯ä»¥ä½¿ç¨is_deleteå段表示ï¼æ们æå®0为æªå é¤ï¼1为å é¤ï¼é£ä¹å¨å é¤æ°æ®æ¶å ¶å®å°±æ¯ä¿®æ¹è¯¥å段çå¼äº
UPDATE tb_student set is_delete = 1 WHERE id = 2;
å¨æ¥è¯¢æ¶ï¼å°±éè¦å¸¦ä¸is_deleteå段ä½ä¸ºå¤ææ¡ä»¶
-- æ¥è¯¢ææå¦ç
SELECT * FROM tb_student WHERE is_delete = 0;
å¨é¡¹ç®ä¸å®ç°åçç¸åï¼æ¤æ¶åç°ä¸ä¸ªä¸æ¹ä¾¿çé®é¢å°±æ¯å¨æ¥è¯¢æ¶é½è¦å¸¦ä¸is_delete = 0çå¤æï¼å é¤çè¯ä¿®æ¹è¯¥å段çå¼ï¼mybatis-plusæä¾äºé»è¾å é¤çæºå¶
æ¥è¯¢ï¼èªå¨è¿½å is_delete = 0çæ¡ä»¶ï¼è¿æ»¤æ已被å é¤çæ°æ®
ä¿®æ¹ï¼ä¿®æ¹æ¶ä¹ä¼è¿½å is_delete = 0çæ¡ä»¶ï¼é²æ¢ä¿®æ¹å·²è¢«å é¤çæ°æ®
å é¤ï¼å°å é¤å为updateè¯å¥ï¼è¯å¥åä¸è¿°é»è¾å é¤sql
åæ°æ®æ°å¢æ¶åä¸éè¦å¤ªè¿äºå ³å¿isDeleteçå¼ï¼ä¸è¬é½ä¼å¨æ°æ®è¡¨ä¸è®¾ç½®è¯¥å¼çé»è®¤å¼ä¸º0
使ç¨æ¹æ³
使ç¨æ¹æ³æ两ç§æ¹å¼ï¼ä½é½éè¦ä¿éä¸ä¸ªåæï¼
- ä¿éæ°æ®è¡¨ä¸æä¸ä¸ªå段æ è¯è¯¥æ°æ®æ¯å¦å é¤ï¼ç±»åæ æè°ãæ¨è使ç¨IntegerãBooleanãç±»åï¼å®æ¹è¿æ¨è使ç¨LocalDateTimeï¼emmm~~~~
å®ç°æ¹å¼ï¼
- å¨å®ä½ç±»ä¸ç对åºå段ä¸æ·»å @TableLogic注解
- æè å¨application.ymlä¸é ç½®mybatis-plusçé»è¾å é¤
æ¤æ¶æ°æ®è¡¨åå®ä½ç±»ä¸é½å·²ç»æä¸ä¸ªå为is_deleteçå段æ è¯æ¯å¦å é¤ï¼å½ç¶è¯¥å段çååä½ å¯ä»¥ä»»æååï¼ä¸è¾¹å°±ä»ç¬¬äºæ¥å¼å§
@TableLogic注解
å¨å®ä½ç±»ä¸çisDeleteå段ä¸æ·»å 该注解ï¼è¯¥æ³¨è§£æ两个å±æ§ï¼æä¹å¦ä¸
- valueï¼è¡¨ç¤ºæªå é¤çå¼ï¼0代表å¦æå¼ä¸º0åæ¯æ²¡æå é¤
- delvalï¼è¡¨ç¤ºå·²å é¤çå¼ï¼1代表该æ°æ®å·²å é¤
@TableLogic(value = "0",delval = "1")
private Integer isDelete;
æ¥è¯¢æµè¯
@Test
public void search() {
List<Student> list = studentService.list();
list.forEach(System.out::println);
}
æ§è¡æ§è¡ï¼åç°æ§å¶å°è¾åºçsqlä¸èªå¨æ¼æ¥ä¸whereæ¡ä»¶
å é¤æµè¯
@Test
public void remove() {
boolean remove = studentService.removeById(3L);
if(remove) System.out.println("å é¤æå");
else System.out.println("å é¤å¤±è´¥");
}
æ¤æ¶çå é¤sqlå°±åæäºupdate
applicationé ç½®æ¹å¼
è¿æä¸ç§æ¹å¼å°±æ¯ä¸ä½¿ç¨æ³¨è§£ï¼å¨application.ymlæ件ä¸é ç½®
# Mybatis-plusé
ç½®
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: isDelete # å
¨å±é»è¾å é¤çå®ä½å段å(since 3.3.0)
# å¦æä½ çé»è¾å é¤å¼åé»è®¤å¼ç¸ååå¯ä»¥ä¸é
置以ä¸ä¸¤é¡¹
logic-delete-value: 1 # é»è¾å·²å é¤å¼(é»è®¤ä¸º 1)
logic-not-delete-value: 0 # é»è¾æªå é¤å¼(é»è®¤ä¸º 0)
两ç§ææç¸åï¼ä¸è¿æ¨è使ç¨é ç½®æ件çæ¹å¼ï¼å¥½å¤å¨äºå ¨å±å ±ç¨ï¼å³ä¸éè¦æ¯ä¸ªå®ä½ç±»ä¸é½å¨isDeleteå±æ§ä¸å@TableLogic注解ï¼åææ¯ä½ ç项ç®ä¸çé»è¾å é¤è§åæ¯ä¸æ ·çå¦
注æ
ä¹ä¸æ¯è¯´é¡¹ç®ä¸é½è¦ä½¿ç¨é»è¾å é¤ï¼æ¯éæ±èå®ï¼é»è¾å é¤æä¸ä¸ªè´å½ç¼ºé·å¨äºå¦ææ°æ®éå§å¢ï¼mysqlå¨å表æ°æ®è¾¾å°300ä¸ä»¥ä¸æ¶æ¥è¯¢æ§è½å°±ä¼ææ¾ä¸éï¼æ¤æ¶å¯ä»¥å°é»è¾å é¤çæ°æ®ç»ä¸è¿ç§»å°å¦ä¸ä¸ªè¡¨ä¸åå¨ï¼æ£å¸¸çä¸å¡è¿æ¯ä½¿ç¨å表ï¼å¦æéè¦ç¨å°åæ¥è¢«å é¤çæ°æ®ï¼åå¯ä»¥å°å¦ä¸å¼ 表ä¸æ¥è¯¢ã