MyBatis-Plus使用ActiveRecord(AR)实现CRUD

 更新时间:2021年07月05日 15:31:51   作者:张起灵-小哥  
本文将结合实例代码,介绍MyBatis-Plus使用ActiveRecord(AR)实现CRUD,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

1.什么是ActiveRecord(AR)?

ActiveRecord 是什么:

  • 每一个数据库表应该对应创建一个实体类,类的每一个对象的实例对应于数据库中表的一行记录; 通常表的每个字段在类中都有相应的方法Field;
  • ActiveRecord 负责把自己持久化. 在 ActiveRecord 中封装了对数据库的访问,通过对象自己实现 CRUD,实现优雅的数据库操作。
  • ActiveRecord 也封装了部分业务逻辑。可以作为业务对象使用。

2.通过AR实现CRUD

首先创建一张表。

创建一个SpringBoot工程,在pom文件中添加依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>5.1.9</version>
        </dependency>
 
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>

在核心配置文件中,配置数据库相关的连接信息。

#配置数据库的相关连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=12345678
 
#配置对应的日志信息
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

创建一个实体类,要使用AR,那么实体类就必须继承MP框架中的Model这个类。

package com.szh.mybatisplus.entity;
 
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
 
/**
 * 使用AR,要求实体类必须继承MP框架中的Model类
 * Model类中提供了数据库相关的CRUD操作
 */
public class Dept extends Model<Dept> {
 
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;
    private String name;
    private String mobile;
    private Integer manager;
 
    //getter and setter
    //toString
}

可以从Model类的源码中看到,这其中定义了大量关于CRUD操作的方法。

创建一个mapper接口。这里虽然不使用 mapper,但也需要定义这个它,MP 通过 mapper 获取到表的结构;不定义时,MP 报错无法获取表的结构信息。

package com.szh.mybatisplus.mapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.szh.mybatisplus.entity.Dept;
 
/**
 *
 */
public interface DeptMapper extends BaseMapper<Dept> {
}

在SpringBoot项目的启动入口类上方,添加@MapperScan注解,确保可以扫描到MyBatis、MP下的相关注解。

package com.szh.mybatisplus;
 
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
@MapperScan(value = "com.szh.mybatisplus.mapper")
public class Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
 
}

1.1 insert

    @Test
    void testDeptInsert() {
        Dept dept=new Dept();
        dept.setName("销售部");
        dept.setMobile("12345678900");
        dept.setManager(1);
 
        //调用实体类对象自己的方法,完成对象自身到数据库的添加操作
        boolean flag=dept.insert();
        System.out.println("insert的结果:" + flag);
    }

1.2 update

    @Test
    void testDeptUpdate() {
        Dept dept=new Dept();
        dept.setId(1);
        dept.setName("研发部");
        dept.setMobile("99999999999");
        dept.setManager(2);
 
        //调用实体类对象自己的方法,完成对象自身到数据库的更新操作
        boolean flag=dept.updateById();
        System.out.println("update的结果:" + flag);
    }

1.3 delete

    @Test
    void testDeptDelete() {
        Dept dept=new Dept();
        boolean result = dept.deleteById(2);
        System.out.println("delete的结果:" + result);
    }

    @Test
    void testDeptDelete2() {
        Dept dept=new Dept();
        dept.setId(2);
        boolean result = dept.deleteById();
        System.out.println("delete的结果:" + result);
    }

1.4 select

    @Test
    void testSelect() {
        Dept dept=new Dept();
        dept.setId(3);
        Dept dept1 = dept.selectById();
        System.out.println("select的结果:" + dept1);
    }

    @Test
    void testSelect2() {
        Dept dept=new Dept();
        Dept dept1 = dept.selectById(3);
        System.out.println("select的结果:" + dept1);
    }

    @Test
    void testSelect3() {
        Dept dept=new Dept();
        List<Dept> deptList=dept.selectAll();
        deptList.forEach( dept1 -> {
            System.out.println(dept1);
        });
    }

到此这篇关于MyBatis-Plus使用ActiveRecord(AR)实现CRUD的文章就介绍到这了,更多相关MyBatis-Plus实现CRUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java的SpringMVC中控制器返回XML数据问题

    Java的SpringMVC中控制器返回XML数据问题

    这篇文章主要介绍了Java的SpringMVC中控制器返回XML数据问题,控制器是处理HTTP请求的组件,它们接收来自客户端的请求,并将其转换为适当的响应,这些响应可以是动态生成的 HTML 页面,也可以是JSON或XML格式的数据,需要的朋友可以参考下
    2023-07-07
  • Java多线程Callable和Future接口区别

    Java多线程Callable和Future接口区别

    这篇文章主要介绍了Java多线程Callable和Future接口区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringKafka消息发布之KafkaTemplate与事务支持功能

    SpringKafka消息发布之KafkaTemplate与事务支持功能

    通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支持特性尤为重要,它确保了在分布式环境中的数据一致性,感兴趣的朋友一起看看吧
    2025-04-04
  • 详解spring boot jpa整合QueryDSL来简化复杂操作

    详解spring boot jpa整合QueryDSL来简化复杂操作

    这篇文章主要介绍了详解spring boot jpa整合QueryDSL来简化复杂操作,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Java实现的简单字符串反转操作示例

    Java实现的简单字符串反转操作示例

    这篇文章主要介绍了Java实现的简单字符串反转操作,结合实例形式分别描述了java遍历逆序输出以及使用StringBuffer类的reverse()方法两种字符串反转操作技巧,需要的朋友可以参考下
    2018-08-08
  • Spring Security中如何获取AuthenticationManager对象

    Spring Security中如何获取AuthenticationManager对象

    有时需要使用AuthenticationManager(以下简称Manager)对象,可是这个对象不是Bean,没有直接保存在Spring的Bean库中,那么如何获取Spring Security中的这个对象呢,需要的朋友可以参考下
    2022-11-11
  • mybatis plus实体类中字段映射mysql中的json格式方式

    mybatis plus实体类中字段映射mysql中的json格式方式

    这篇文章主要介绍了mybatis plus实体类中字段映射mysql中的json格式方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot单机限流的实现

    SpringBoot单机限流的实现

    在系统运维中, 有时候为了避免用户的恶意刷接口, 会加入一定规则的限流,本文主要介绍了SpringBoot单机限流的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Spring @ComponentScan注解使用案例详细讲解

    Spring @ComponentScan注解使用案例详细讲解

    @ComponentScan注解的作用可以简述为:将项目中所有被@Component注解直接或者间接标记的类---->组装成BeanDefinition---->然后以key=beanName, value=BeanDefinition的形式存储,为后续生成bean对象做准备
    2023-03-03
  • Java异常继承结构解析_动力节点Java学院整理

    Java异常继承结构解析_动力节点Java学院整理

    这篇文章主要介绍了Java异常继承结构解析的相关知识,需要的朋友可以参考下
    2017-04-04

最新评论