首页 > 编程语言 >Java (MyBatis-Plus 项目)

Java (MyBatis-Plus 项目)

时间:2024-06-11 12:12:11浏览次数:12  
标签:yanfan Java hellomp Plus User org MyBatis import com

前沿

MyBatis-Plus 在使用这个时候的

它通过提供简洁、强大的 API 和注解支持,简化了常见的数据库操作。
以下是关于 MyBatis-Plus 中注解的解释和示例,理解和使用
1. 实体类注解
@TableName:用于指定数据库表的名称。
@TableId:用于指定主键字段。
@TableField:用于指定非主键字段的属性配置。
2. 逻辑删除注解
@TableLogic:用于实现逻辑删除。
3. 字段填充注解
@TableField:其中的 fill 属性可以用于指定字段的自动填充策略,如插入和更新时自动填充时间戳等。
创建项目的
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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.yanfan</groupId>
    <artifactId>hello-mp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>hello-mp</name>
    <description>hello-mp</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <!--3.5.4开始,支持SpringBoot3使用此版本-->
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<!--        <artifactId>mybatis-plus-boot-starter</artifactId>-->
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </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>
    </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>
View Code

注入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <!--3.5.4开始,支持SpringBoot3使用此版本-->
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<!--        <artifactId>mybatis-plus-boot-starter</artifactId>-->
            <version>3.5.5</version>
        </dependency>

配合mysql 8 以上要使用3.5.5的 mybatis-plus

 

项目的目录

  • UserServiceImpl

    • 这是一个服务实现类,用于处理 User 实体的业务逻辑。
    • 继承了 ServiceImpl<UserMapper, User>,意味着这个类自动拥有了 ServiceImpl 提供的所有方法,例如 saveremovegetByIdlist 等。
  • ServiceImpl

    • ServiceImpl 是 MyBatis-Plus 提供的一个基础服务实现类,它实现了 IService 接口,提供了基础的 CRUD 操作。
    • 通过继承 ServiceImpl,你的服务实现类无需自己编写这些常用的数据库操作代码。
  • UserMapper 接口

    • UserMapper 是 MyBatis-Plus 的 Mapper 接口,用于定义 User 实体对应的数据库操作方法。它通常继承自 MyBatis-Plus 的 BaseMapper 接口。
  • User 实体类

    • User 是一个实体类,表示数据库中的用户表。
  • UserService 接口

    • UserService 是一个自定义的服务接口,定义了 User 实体的业务操作。该接口可以继承 MyBatis-Plus 的 IService<User> 接口。

 

然后在src 下面的数据库建立

 config 新建   MpConfiguration 配置 mybatisPlus

package org.yanfan.hellomp.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MpConfiguration {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

 

 

然后就是实体类

package org.yanfan.hellomp.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.Data;

@Data
@TableName("user")
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField("name")
    private String name;

    @TableField("age")
    private Integer age;

    @TableField("email")
    private String email;
}

 

再就是 mapper 映射数据库

package org.yanfan.hellomp.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.yanfan.hellomp.entity.User;

// Mapper 的接口
@Mapper             //实体类的泛型
public interface UserMapper extends BaseMapper<User> {
}

service

 

服务接口 UserService

package org.yanfan.hellomp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.yanfan.hellomp.entity.User;

// IService 都是基于BaseMapper 的底沉的封装
public interface UserService extends IService<User> {
}

服务实现类 UserServiceImpl

package org.yanfan.hellomp.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.yanfan.hellomp.entity.User;
import org.yanfan.hellomp.mapper.UserMapper;

@Service
// 把方法都继承过来 就不需要自己再实现了 ServiceImpl
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

}

 

如何使用

在控制器中使用 UserService

package org.yanfan.hellomp.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.yanfan.hellomp.entity.User;
import org.yanfan.hellomp.service.UserService;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.list();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getById(id);
    }

    @PostMapping
    public void saveUser(@RequestBody User user) {
        userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.removeById(id);
    }
}

 

然后就是测试test

package org.yanfan.hellomp.service;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Service;
import org.yanfan.hellomp.entity.User;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
class UserServiceImplTest {

    @Autowired
    private UserService userService;

    @Test
    public void TestById() {
        User user = userService.getById(2);
        System.out.println(user);
    }

    @Test
    public void TestSaveOrUpdate() {
        User user1 = userService.getById(1);
        user1.setName("我的");

        User user2 = new User();
        user2.setName("joke");
        user2.setAge(12);
        userService.saveOrUpdate(user1);
        userService.saveOrUpdate(user2);
    }

    @Test
    public void TestSaveBatch() {
        User user1 = new User();
        user1.setName("role");
        user1.setAge(21);
        user1.setEmail("[email protected]");
        User user2 = new User();
        user2.setName("joke");
        user2.setAge(12);
        user2.setEmail("[email protected]");

        List<User> users = List.of(user1, user2);
        userService.saveBatch(users);
    }
}

 

解释

  1. UserServiceImpl 继承了 ServiceImpl<UserMapper, User>,使得 UserServiceImpl 类自动具备了 ServiceImpl 类的所有方法,而这些方法已经由 MyBatis-Plus 实现。
  2. @Service 注解:将 UserServiceImpl 标注为一个 Spring 服务组件,使其能够被依赖注入。
  3. UserController:使用 UserService 来处理 HTTP 请求并调用相应的服务方法。

通过这种方式,轻松地创建一个完整的 CRUD 应用,加强理解和掌握 MyBatis-Plus 提供的便利和强大功能。

 

 

标签:yanfan,Java,hellomp,Plus,User,org,MyBatis,import,com
From: https://www.cnblogs.com/yf-html/p/18241822

相关文章

  • Springboot + Mybatis Plus整合Sqlite3
    什么是Sqlite3sqlite3是一个进程内的库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎。它是一个增长最快的数据库引擎。它不是一个独立的进程,可以按应用程序需求进行静态或动态连接,SQLite直接访问其存储文件。为什么要使用Sqlite3不需要一个单独的服务器进程......
  • Java实现定时任务的几种方式 ---------内附源码
      在我们日常项目开发过程中,经常用到定时任务,如果使用不当甚至会造成资源损毁,定时任务使用不当,会导致发出大量重复操作,可能会造成巨大的后果。  所以,系统的学习一下定时任务,是非常有必要的。这篇文章就带大家整体梳理学习一下Java领域中常见的几种定时任务实现。 ......
  • MyBatisX插件逆向工程和SQL生成使用
    1.MyBatisX插件逆向工程将表映射成实体类在IDEA中装好MyBatisX插件并连接数据库后,对咬映射成实体类的表点击鼠标右键,如下图所示:之后会弹出如下界面:然后根据如图信息进行配置,点击next。如果使用的是MyBatis-Plus3直接按照下图选项即可:至此结束逆向工程将表映射成实体类。......
  • JavaScript基础用法(变量定义、输入输出、转义符、注释和编码规范)
    天行健,君子以自强不息;地势坤,君子以厚德载物。每个人都有惰性,但不断学习是好好生活的根本,共勉!文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。文章目录JavaScript基础用法1.变量1.1语法1.2示例代码1.3浏览器效果2.输入和输出2.1输出2.1.1输......
  • 回顾Java中的安全模型
    Java中的安全模型是一个多层次、综合性的框架,旨在确保Java应用程序的安全运行。该模型包括多个关键组件和机制,以下是对Java安全模型的详细解释:沙箱模型(Sandbox):Java应用程序运行在一个受限的环境中,即沙箱。沙箱限制了应用程序对系统资源的访问,从而防止了恶意代码对系统造成......
  • 描述常见的Java安全漏洞和防范措施
    常见的Java安全漏洞及其防范措施可以归纳如下:一、常见的Java安全漏洞跨站脚本攻击(XSS)漏洞描述:攻击者通过在网页中插入恶意脚本来获取用户的敏感信息或执行恶意操作。防范措施:输入验证和过滤:对用户输入的数据进行严格验证和过滤,剔除恶意脚本。输出转义:在将用户数据输出......
  • java 异常处理方法
    java异常处理方法privateStringassembleErrorMessage(Exceptione){JSONObjecterrorMessage=newJSONObject();Optional<StackTraceElement>stackTraceElement=Arrays.stream(e.getStackTrace()).findFirst();Stringcause=e.toString(......
  • JAVA版本号的问题 Java版本号与JDK版本
    分不清Java版本和JDK版本的对应关系。抄一篇记忆一下。Java版本叫法:Java6、Java8、Java11、Java13(当前最新版本Java17)等这一类“JavaX”的Java版本名称同时又会听到,看到JDK版本叫法:JDK1.6、JDK1.8等这种“JDK1.X”的JDK叫法。这里我们就需要追溯一下Java的发展历程......
  • Java整合FreeMarker导出Pdf文件
    引入依赖<!--Freemarkerwls--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> <dependency> <groupId>......
  • 「Java开发指南」如何使用Spring注释器实现Spring控制器?(一)
    本教程将引导您使用SpringAnnotator实现Spring控制器,标准Java类被添加到搭建项目中,SpringAnnotatorSpring启用Java类。虽然本教程的重点是Spring控制器,但是SpringAnnotator也可以用于Spring服务、组件和存储库。在本教程中,您将学习如何:创建一个Java类将类配置为Spring控制......