• springBoot集成mybatis-plus


    1.环境搭建

    1.sql

    CREATE TABLE `t_user` (
      `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
      `name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',
      `age` int NOT NULL COMMENT '年龄',
      `password` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',
      `sex` char(8) COLLATE utf8mb4_general_ci NOT NULL,
      `create_time` timestamp(6) NULL DEFAULT NULL,
      `is_del` tinyint(1) DEFAULT '0',
      PRIMARY KEY (`id`),
      UNIQUE KEY `t_user_pk2` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.创建maven工程并且导入坐标

    
    <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.0modelVersion>
    
        <groupId>com.andygroupId>
        <artifactId>springboot_crudartifactId>
        <version>1.0-SNAPSHOTversion>
    
        <properties>
            <maven.compiler.source>11maven.compiler.source>
            <maven.compiler.target>11maven.compiler.target>
            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        properties>
        <parent>
            <artifactId>spring-boot-starter-parentartifactId>
            <groupId>org.springframework.bootgroupId>
            <version>2.7.13version>
        parent>
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
            dependency>
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.13.2version>
                <scope>testscope>
            dependency>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-data-restartifactId>
            dependency>
            <dependency>
                <groupId>com.alibaba.fastjson2groupId>
                <artifactId>fastjson2artifactId>
                <version>2.0.40version>
            dependency>
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>8.0.33version>
            dependency>
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.26version>
                <scope>providedscope>
            dependency>
            <dependency>
                <groupId>com.baomidougroupId>
                <artifactId>mybatis-plus-boot-starterartifactId>
                <version>3.5.3.1version>
            dependency>
        dependencies>
    project>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    3.application.yml文件中的配置

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/study_test
        username: root
        password: root
    mybatis-plus:
      # 包扫描
      type-aliases-package: com.andy.pojo
      # 加载Mapper.xml文件
      mapper-locations: classpath:/mapper/*.xml
      configuration:
        # 输出日志
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4.pojo层

    package com.andy.pojo;
    
    import com.alibaba.fastjson2.annotation.JSONField;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableLogic;
    import com.baomidou.mybatisplus.annotation.TableName;
    import com.baomidou.mybatisplus.extension.activerecord.Model;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import lombok.Data;
    import lombok.EqualsAndHashCode;
    
    import java.sql.Timestamp;
    
    
    @Data
    @EqualsAndHashCode(callSuper = true)
    @TableName(value = "t_user")
    public class User extends Model<User> {
    
        private static final long serialVersionUID = 3404898457642193846L;
        /**
         * ID
         */
        @TableId(value = "id",type = IdType.AUTO)
        @JSONField(ordinal = 0)
        private Long id;
        /**
         * 姓名
         */
        @JSONField(ordinal = 1)
        private String name;
        /**
         * 密码
         */
        @JSONField(ordinal = 2)
        private String password;
        /**
         * 年龄
         */
        @JSONField(ordinal = 3)
        private Integer age;
        /**
         * 性别
         */
        @JSONField(ordinal = 4)
        private String  sex;
        /**
         * 时间
         */
        @JSONField(ordinal = 5)
        private Timestamp createTime;
        /**
         * 逻辑删除
         */
        @TableLogic
        @JsonIgnore
        private Boolean isDel;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    4.mapper层

    package com.andy.mapper;
    
    import com.andy.pojo.User;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    
    /**
     * @author andy
     */
    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5.service层

    package com.andy.service;
    
    import com.andy.pojo.User;
    import com.baomidou.mybatisplus.extension.service.IService;
    
    
    public interface IUserService extends IService<User> {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6.serviceImpl层

    package com.andy.service.impl;
    
    import com.andy.mapper.UserMapper;
    import com.andy.pojo.User;
    import com.andy.service.IUserService;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    7.测试类代码

    package com.andy.mybatis.user;
    
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    /**
     * @author Andy
     * @version 0.0.1
     * @since 2023-10-11 14:22
     */
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestService {
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.造数据代码

    1.在service层定义
    在这里插入图片描述

        /**
         * 测试数据
         * @param startId 开始id
         * @param endId 结束ID
         * @throws InterruptedException /
         */
        void saveTest(Integer startId, Integer endId) throws InterruptedException;
       
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.实现saveTest接口

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveTest(Integer startId, Integer endId) throws InterruptedException {
        ThreadLocalRandom current = ThreadLocalRandom.current();
        List<User> users = new ArrayList<>(endId + 1);
        for (int i = startId; i < endId + 1; i++) {
            User userTest = new User();
            userTest.setId((long) i);
            userTest.setName(getName());
            userTest.setPassword(String.valueOf(current.nextInt(100000,1000000)));
            userTest.setSex(String.valueOf(current.nextInt(0, 2)).equals("1") ?"男":"女");
            userTest.setAge(current.nextInt(10, 50));
            userTest.setCreateTime(new Timestamp(ThreadLocalRandom.current().nextLong(1307008513279L,1697008513279L)));
            userTest.setIsDel(Boolean.FALSE);
            users.add(userTest);
        }
        Integer index = startId;
        List<User> sortedUsers = users.stream().sorted(Comparator.comparing(User::getCreateTime)).collect(Collectors.toList());
        for (User sortedUser : sortedUsers) {
            sortedUser.setId((long) startId);
            startId++;
        }
        this.saveBatch(sortedUsers);
    }
    
    // 姓氏池
    private static final String SURNAME = "赵钱孙李周吴郑王冯陈卫蒋沈韩杨朱许";
    // 名字池
    private static final String NAME = "三四五六七八安星楠希拧允言遥初乐依宇苏思诺";
    
    public static String getName() {
        // 开局获取一个姓氏池的随机下标
        int surnameLength = (int) (Math.random() * (SURNAME.length()));
        // 通过下标随机获取到一个姓氏
        char c = SURNAME.charAt(surnameLength);
        // 创建一个可扩容字符串
        StringBuilder userName = new StringBuilder();
        // 将随机获取到的姓氏拼接
        userName.append(c);
        // 随机(1,3]的随机数(一般名字要么是两个字要么一个字)
        int nameLength = (int) (Math.random() * 3);
        // 判断随机数是否大于1 如果大于 1那么就进行两次随机获取名字池的某个字符,进行拼接
        if (nameLength > 1) {
            // int i1 = (int) (Math.random() * (NAME.length()));
            int i1 = ThreadLocalRandom.current().nextInt(NAME.length());
            char c1 = NAME.charAt(i1);
            // int i2 = (int) (Math.random() * (NAME.length()));
            int i2 = ThreadLocalRandom.current().nextInt(NAME.length());
            char c2 = NAME.charAt(i2);
            userName.append(c1);
            userName.append(c2);
            return String.valueOf(userName);
            // 其他情况下就是一个字的名字,只获取一个字
        } else {
            int i1 = (int) (Math.random() * (NAME.length()));
            char c1 = NAME.charAt(i1);
            userName.append(c1);
            return String.valueOf(userName);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    3.在测试类TestService编写代码:

    @Resource
    private IUserService userService;
    
    /**
     * 生成测试数据
     */
    @Test
    public void testDataSave() throws InterruptedException {
        userService.saveTest(1,5);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4.运行结果

    在这里插入图片描述
    5.数据库验证查询

    select * from t_user;
    
    • 1

    在这里插入图片描述

    3.CRUD 接口

    1.如何配置统一的逻辑删除

    1.案例如下:

    删除: update user set is_del=1 where id = 1 and is_del=0
    查找: select id,name,is_del from user where is_del=0
    
    • 1
    • 2

    2.在yml文件中配置如下内容:

    mybatis-plus:
      global-config:
        db-config:
          # 全局逻辑删除字段
          logic-delete-field: is_del 
          # 逻辑已删除值(默认为 1)
          logic-delete-value: 1 
          # 逻辑未删除值(默认为 0)
          logic-not-delete-value: 0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.pojo层的CRUD 接口

    1.新增

    @Test
    public void testPojoSave(){
        User user = new User();
        user.setName("root");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("男");
        // 新增
        user.insert();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.查询

    @Test
    public void testPojoRead(){
        User user = new User();
        // 查询所有
        System.out.println(user.selectAll());
        // 更具ID查询
        System.out.println(user.selectById(1));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.更新

    @Test
    public void testPojoUpdate(){
        User user = new User();
        // id必须有
        user.setId(1L);
        user.setName("aaa");
        user.updateById();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.删除(逻辑删除)

    @Test
    public void testPojoDelete(){
       User user = new User();
       user.setId(1L);
       user.deleteById();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    数据库验证SQL:

    select * from t_user
    
    • 1

    在这里插入图片描述
    5.本节完整代码

    package com.andy.mybatis.user;
    
    import com.andy.pojo.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.sql.Timestamp;
    
    /**
     * @author Andy
     * @version 0.0.1
     * @since 2023-10-12 11:12
     */
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestPojo {
        /**
         * 新增
         */
        @Test
        public void testPojoSave(){
            User user = new User();
            user.setName("root");
            user.setPassword("123456");
            user.setAge(30);
            user.setCreateTime(new Timestamp(System.currentTimeMillis()));
            user.setSex("男");
            // 新增
            user.insert();
    
        }
        /**
         * 查询
         */
        @Test
        public void testPojoRead(){
            User user = new User();
            // 查询所有
            System.out.println(user.selectAll());
            // 更具ID查询
            System.out.println(user.selectById(1));
        }
        /**
         * 修改
         */
        @Test
        public void testPojoUpdate(){
    
            User user = new User();
            // id必须有
            user.setId(1L);
            user.setName("aaa");
            user.updateById();
        }
        /**
         * 逻辑删除
         */
        @Test
        public void testPojoDelete(){
            User user = new User();
            user.setId(1L);
            user.deleteById();
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    3.mapper层的CRUD 接口

    注意:使用Mapper层时要将Mapper进行注入:代码如下

     @Resource
     private UserMapper userMapper;
    
    • 1
    • 2

    1.新增

    @Test
    public void testMapperSave(){
    
        User user = new User();
        user.setName("bbb");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("女");
        userMapper.insert(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    数据库验证SQL

    select * from t_user
    
    • 1

    在这里插入图片描述

    2.查询

    @Test
    public void testMapperRead(){
        System.out.println(userMapper.selectById(1L));
        System.out.println(userMapper.selectList(null));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.更新

    @Test
    public void testMapperUpdate(){
        User user = new User();
        user.setId(7L);
        user.setSex("男");
        userMapper.updateById(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.删除

    public void testMapperDelete(){
        userMapper.deleteById(2L);
    }
    
    • 1
    • 2
    • 3

    数据库验证SQL

    select * from t_user
    
    • 1

    在这里插入图片描述

    5.本节完整代码

    package com.andy.mybatis.user;
    
    import com.andy.mapper.UserMapper;
    import com.andy.pojo.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import javax.annotation.Resource;
    import java.sql.Timestamp;
    
    /**
     * @author Andy
     * @version 0.0.1
     * @since 2023-10-12 14:23
     */
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestMapper {
    
        @Resource
        private UserMapper userMapper;
        /**
         * 新增
         */
        @Test
        public void testMapperSave(){
    
            User user = new User();
            user.setName("bbb");
            user.setPassword("123456");
            user.setAge(30);
            user.setCreateTime(new Timestamp(System.currentTimeMillis()));
            user.setSex("女");
            userMapper.insert(user);
        }
        /**
         * 查询
         */
        @Test
        public void testMapperRead(){
        	// 根据ID查询
            System.out.println(userMapper.selectById(1L));
            // 查询所有
            System.out.println(userMapper.selectList(null));
        }
        /**
         * 更新
         */
        @Test
        public void testMapperUpdate(){
            User user = new User();
            user.setId(7L);
            user.setSex("男");
            userMapper.updateById(user);
        }
        /**
         * 逻辑删除
         */
        @Test
        public void testMapperDelete(){
            userMapper.deleteById(2L);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    4.service层的CRUD 接口

    注意:使用Mapper层时要将Mapper进行注入:代码如下

     @Resource
     private IUserService userService;
    
    • 1
    • 2

    1.新增

    @Test
    public void testServiceSave() {
        User user = new User();
        user.setName("root");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("男");
        userService.save(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.查询

    @Test
    public void testServiceRead() {
        // 查询所有
        System.out.println(userService.list());
        // 根据ID查询
        System.out.println(userService.getById(1L));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.更新

    @Test
    public void testServiceUpdate() {
        User user = new User();
        user.setId(8L);
        user.setName("ccc");
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        userService.updateById(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.删除

    @Test
    public void testServiceDelete() {
        userService.removeById(3L);
    }
    
    • 1
    • 2
    • 3
    • 4

    5.本节完整代码

    package com.andy.mybatis.user;
    
    import com.andy.pojo.User;
    import com.andy.service.IUserService;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import javax.annotation.Resource;
    import java.sql.Timestamp;
    
    /**
     * @author Andy
     * @version 0.0.1
     * @since 2023-10-12 14:22
     */
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestService {
    
        @Resource
        private IUserService userService;
    
        /**
         * 新增
         */
        @Test
        public void testServiceSave() {
            User user = new User();
            user.setName("root");
            user.setPassword("123456");
            user.setAge(30);
            user.setCreateTime(new Timestamp(System.currentTimeMillis()));
            user.setSex("男");
            userService.save(user);
        }
        /**
         * 查询
         */
        @Test
        public void testServiceRead() {
            // 查询所有
            System.out.println(userService.list());
            // 根据ID查询
            System.out.println(userService.getById(1L));
        }
        /**
         * 修改
         */
        @Test
        public void testServiceUpdate() {
            User user = new User();
            user.setId(8L);
            user.setName("ccc");
            user.setCreateTime(new Timestamp(System.currentTimeMillis()));
            userService.updateById(user);
        }
        /**
         * 删除
         */
        @Test
        public void testServiceDelete() {
            userService.removeById(3L);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    4.新增或删除如何用

    1.pojo层的方法为:insertOrUpdate()

    1.无d的情况:

        @Test
        public void testPojoInsertOrUpdate(){
            User user = new User();
            user.setName("ddd");
            user.setPassword("123456");
            user.setAge(30);
            user.setCreateTime(new Timestamp(System.currentTimeMillis()));
            user.setSex("男");
            user.insertOrUpdate();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.测试结果
    在这里插入图片描述
    3.结论:没有ID就会新增

    4.有ID的情况:

    @Test
    public void testPojoInsertOrUpdate(){
        User user = new User();
        user.setId(9L);
        user.setName("xxx");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("男");
        user.insertOrUpdate();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    5.结论:有ID就会更新

    2.mapper层没有

    3.service层的方法为:saveOrUpdate()

    1.无d的情况:

    @Test
    public void testPojoInsertOrUpdate(){
        User user = new User();
        user.setName("eee");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("男");
        userService.saveOrUpdate(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.有id的情况;

    @Test
    public void testPojoInsertOrUpdate(){
        User user = new User();
        user.setId(10L);
        user.setName("gggg");
        user.setPassword("123456");
        user.setAge(30);
        user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        user.setSex("男");
        userService.saveOrUpdate(user);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.结论:有id就会更新,没有id就会新增

    5.分页查询

    1.配置类

    @Configuration
    @MapperScan("scan.your.mapper.package")
    public class MybatisPlusConfig {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
        
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            //如果配置多个插件,切记分页最后添加
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            
            //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
            
            return interceptor;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.查询当前表数据
    在这里插入图片描述

    1.在代码中的用法

    1.service层代码

    @Test
    public void testServicePage(){
    	// 第1页 每页3条数据
        IPage<User> userIPage = new Page<>(1,3);
        IPage<User> pageData = userService.page(userIPage);
        // 结果数据
        System.out.println(pageData.getRecords());
        // 当前页
        System.out.println(pageData.getCurrent());
        // 当前页总数
        System.out.println(pageData.getSize());
        // 总数
        System.out.println(pageData.getTotal());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.mapper层代码

    @Test
    public void testMapperPage(){
    	// 第1页 每页3条数据
        IPage<User> userIPage = new Page<>(1,3);
        IPage<User> pageData = userMapper.selectPage(userIPage,null);
        // 结果数据
        System.out.println(pageData.getRecords());
        // 当前页
        System.out.println(pageData.getCurrent());
        // 当前页总数
        System.out.println(pageData.getSize());
        // 总数
        System.out.println(pageData.getTotal());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.pojo层代码

    @Test
    public void testPojoPage(){
    	// 第1页 每页3条数据
        IPage<User> userIPage = new Page<>(1,3);
        User user = new User();
        IPage<User> pageData = user.selectPage(userIPage,null);
        // 结果数据
        System.out.println(pageData.getRecords());
        // 当前页
        System.out.println(pageData.getCurrent());
        // 当前页总数
        System.out.println(pageData.getSize());
        // 总数
        System.out.println(pageData.getTotal());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.xml文件中的使用

    1.在UserMapper中定义接口

    IPage<User> findByPage(IPage<User> page);
    
    • 1

    2.xml文件配置

        <select id="findByPage" resultType="com.andy.pojo.User">
            select * from t_user where is_del = 0
        select>
    
    • 1
    • 2
    • 3

    3.测试代码

        @Test
        public void testMapperPage(){
            IPage<User> userIPage = new Page<>(1,3);
    
            // 第1页 每页3条数据
            IPage<User> pageData = userMapper.findByPage(userIPage);
    
            // 结果数据
            System.out.println(pageData.getRecords());
            // 当前页
            System.out.println(pageData.getCurrent());
            // 当前页总数
            System.out.println(pageData.getSize());
            // 总数
            System.out.println(pageData.getTotal());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    【关系抽取】基于Bert的信息抽取模型CasRel
    基于SpringBoot的飘香水果购物网站
    服务器硬件基础知识
    星起航跨境——万圣节产品不知道怎么选,这样选既安全又有效
    1720. 解码异或后的数组
    jQuery小结四
    5 分钟,教你用 Docker 部署一个 Python 应用
    Vuex存值取值
    SpringMvc中RequestMapping注解
    【ChatGPT】人工智能的下一个前沿
  • 原文地址:https://blog.csdn.net/weixin_44702984/article/details/133784769