springboot整合mybatis-plus实现增删改查功能
一、创建数据库
字段名称 |
中文 |
类型 |
长度 |
主键 |
自增 |
默认值 |
备注 |
Id |
|
Int |
|
Y |
|
|
|
emp_name |
员工姓名 |
varchar |
|
|
|
|
|
login_name |
登录帐号 |
Varchar |
|
|
|
|
|
login_password |
登录密码 |
|
|
|
|
|
|
age |
年龄 |
Int |
|
|
|
|
|
gender |
性别 |
Varchar |
|
|
|
|
|
addr |
地址 |
varchar |
|
|
|
|
|
dept_name |
部门名称 |
Varchar |
|
|
|
|
|
status |
状态 |
tinyint |
|
|
|
0 |
0工作 1休息 2离职 默认是工作状态 |
deleted |
是否删除 |
tinyint |
1 |
|
|
0 |
|
二、使用springboot整合mybatis-plus向上表中插入数据
三、查询上表中的所有数据,不显示员工登录密码
四、将所有部门为市场部的员工的部门名称,修改为销售部
五、将所有吉林市和长春市的员工,年龄不在30到50之前的,状态全部修改为休息
六、将所有60岁以上的男性员工全部从数据表中删除
新建一个Spring Initializr的Moduel
添加Lombok,Spring Web,MySQL Driver依赖
配置好pom.xml
<?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> <groupId>com.xzit</groupId> <artifactId>day5_job</artifactId> <version>0.0.1-SNAPSHOT</version> <name>day5_job</name> <description>day5_job</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.7.RELEASE</spring-boot.version> </properties> <dependencies> <!--spring web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--mybatis plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--junit--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.7.RELEASE</version> <configuration> <mainClass>com.xzit.Day5JobApplication</mainClass> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
配置一个application.yml文件
其中logic-delete-field:deleted 就是配置数据库逻辑删除的字段是deleted
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8 username: root password: zengyu1234 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: #配置数据库逻辑删除的字段 db-config: logic-delete-field: deleted
在主类中配置一个mapper扫描器的注解,写上mapper的路径com.xzit.mapper
package com.xzit; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan(basePackages = {"com.xzit.mapper"}) public class Day5JobApplication { public static void main(String[] args) { SpringApplication.run(Day5JobApplication.class, args); } }
按照数据库表字段新建实体类Employee
package com.xzit.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @Data @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) @TableName("employee") public class Employee { /*声明这个字段为自增长字段,插入值时会插入自增长数值*/ @TableId(type = IdType.AUTO) private int id; private String emp_name; private String login_name; /*声明该密码字段查询不返回值*/ @TableField(select = false) private String login_password; private int age; private String gender; private String addr; private String dept_name; private int status; private int deleted; }
在测试类中实现新增方法,
@SpringBootTest声明该类为Junit测试类
package com.xzit; import com.xzit.entity.Employee; import com.xzit.mapper.EmployeeMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @SpringBootTest class Day5JobApplicationTests { @Resource private EmployeeMapper mapper; /*二、使用springboot整合mybatis-plus向上表中插入数据*/ @Test void save() { List<Employee> list = new ArrayList<>(); Employee e1 = new Employee(0,"伊万","ivan","1234.abcd",26,"男","澳大利亚墨尔本","开发部",0,0); Employee e2 = new Employee(0,"丁老师","evan","1234.abcd",64,"男","吉林省长春市","市场部",0,0); Employee e3 = new Employee(0,"陈九歌","avan","1234.abcd",26,"女","吉林省吉林市","市场部",0,0); Employee e4 = new Employee(0,"孔乙己","bvan","1234.abcd",35,"男","吉林省长春市","市场部",0,0); list.add(e1); list.add(e2); list.add(e3); list.add(e4); for (Employee e:list){ mapper.insert(e); } } }
执行效果
在测试类中实现查询方法
/*三、查询上表中的所有数据,不显示员工登录密码*/ @Test void selectList(){ List<Employee> list = mapper.selectList(null);//查询所有数据时不带查询参数 list.forEach(System.out::println); }
执行效果
实现修改方法
/*四、将所有部门为市场部的员工的部门名称,修改为销售部*/ @Test void updateByDept(){ //声明一个Lambda员工类,使用该类可以避免字段值打错 LambdaUpdateWrapper<Employee> wrapper= new LambdaUpdateWrapper<>(); wrapper.set(Employee::getDept_name,"销售部") .like(Employee::getDept_name,"市场部"); mapper.update(null,wrapper); }
执行效果
实现按年龄区间查询的功能,要上苞米豆上查询一下mybatis plus条件构造器的使用方法,使用not between这个方法实现
实现按条件修改方法
/*五、将所有吉林市和长春市的员工,年龄不在30到50之前的,状态全部修改为休息*/ @Test void updateByAge(){ Employee employee=new Employee(); employee.setStatus(1);//0工作 1休息 2离职 默认是工作状态 UpdateWrapper wrapper=new UpdateWrapper(); wrapper.notBetween("age",30,50); mapper.update(employee,wrapper); }
执行效果
实现删除方法
/*六、将所有60岁以上的男性员工全部从数据表中删除*/ @Test void deleteByAge(){ QueryWrapper<Employee> wrapper = new QueryWrapper<>(); wrapper.ge("age",60); mapper.delete(wrapper); }
执行效果