Mybatis-Plus:ActiveRecord(根据主键查询、新增数据、更新操作、删除操作、根据条件查询)

发布于:2023-01-09 ⋅ 阅读:(531) ⋅ 点赞:(0)

本节案例承接自上节案例

1. ActiveRecord

ActiveRecord可以理解为Mybatis-Plus给我们提供一些简单的增删改查操作SQl语句的自动生成操作。

什么是ActiveRecord?

ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而
且简洁易懂。

ActiveRecord的主要思想是:

  • 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field
  • ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD
  • ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

1.1 开启AR之旅

Mybatis-Plus中,开启AR非常简单,只需要将实体对象继承Model即可。

在这里插入图片描述

package com.tian.pojo;


import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User extends Model<User> {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

1.2 根据主键查询

在这里插入图片描述
SpringbootMybatisplusApplicationTests.java

package com.tian.springbootmybatisplus;

import com.tian.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootMybatisplusApplicationTests {

    @Test
    public void testSelectById() {
        User user = new User();
        user.setId(2L);
			
		// 注意这里直接调用的是user的selectById方法
        User user1 = user.selectById();
        System.out.println(user1);
    }

}

运行结果:

生成的sql为:SELECT id,user_name,password,name,age,email FROM tb_user WHERE id=?

在这里插入图片描述

说明:

在这里插入图片描述


1.3 新增数据

    @Test
    public void testInsert() {
        User user = new User();
        user.setUserName("diaochan");
        user.setPassword("123456");
        user.setAge(20);
        user.setName("貂蝉");
        user.setEmail("diaochan@itcast.cn");

        // 调用AR的insert方法进行插入数据 返回true说明插入成功 false说明插入失败
        boolean insert = user.insert();
        System.out.println("result => " + insert);
    }

运行结果:

生成的sql为:INSERT INTO tb_user ( user_name, password, name, age, email ) VALUES ( ?, ?, ?, ?, ? )
在这里插入图片描述
在这里插入图片描述


1.4 更新操作

    @Test
    public void testUpdate() {
        User user = new User();
        user.setId(7L);// 查询条件 Id为7
        user.setAge(25); // 更新的数据 把age设置为25

        boolean result = user.updateById();
        System.out.println("result => " + result);
    }

运行结果:

生成的sql为:UPDATE tb_user SET age=? WHERE id=?
在这里插入图片描述
在这里插入图片描述


1.5 删除操作

    @Test
    public void testDelete() {
        User user = new User();
        // 设置删除的条件为id为7
        user.setId(7L);

        // 返回true说明删除成功 否则说明删除失败
        boolean delete = user.deleteById();
        System.out.println("result => " + delete);
    }

运行结果:

生成的sql为:DELETE FROM tb_user WHERE id=?
在这里插入图片描述
在这里插入图片描述


1.6 根据条件查询

想要更好的掌握这一块知识的同学请看 条件构造器说明

    public void testSelect() {
        User user = new User();

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 查询 name 为 王五 或者 age 为 21 的用户的 id和name和age
        wrapper.eq("name", "王五")
                .or()
                .eq("age", 21)
                .select("id", "name", "age"); //指定查询的字段为 id、name、age

        List<User> users = user.selectList(wrapper);
        for (User user1 : users) {
            System.out.println(user1);
        }
    }

运行结果:

生成的sql为:SELECT id,name,age FROM tb_user WHERE (name = ? OR age = ?)
在这里插入图片描述



本文含有隐藏内容,请 开通VIP 后查看