【详细】Spring Boot+Mybatis Plus (全CRUD和分页查询)

加油,新时代打工人!

MyBatis-Plus快速入门–环境搭建
MyBatis-Plus–三种方式整合之一 Mybatis+MP整合
MyBatis-Plus–三种方式整合之二 Spring+MP整合
MyBatis-Plus–三种方式整合之三 Spring Boot+MP整合

数据库脚本和更多MP整合方式,参考以上文章

以下文章环境基于MyBatis-Plus–三种方式整合之三 Spring Boot+MP整合以上进行了扩展

新的分页插件

package itboywh.mp;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wh
 * @date 2021年12月01日15:56
 */
@Configuration
@MapperScan("itboywh.mp.mapper")
public class MybatisPlusConfig {
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        paginationInnerInterceptor.setOverflow(true);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }

}

Spring Boot+Mybatis Plus 详细CRUD和分页查询

package itboywh.mp;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import itboywh.mp.mapper.UserMapper;
import itboywh.mp.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author wh
 * @date 2021年11月29日19:11
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserAdd {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void add() {
        User user = new User();
        user.setAge(20);
        user.setName("小明");
        user.setMail("itboywh@github.com");
        user.setUserName("xiaoming");
        user.setPassword("123456");
        int insert = userMapper.insert(user);
        System.out.println("受影响行数" + insert);
        System.out.println("id>=" + user.getId());
    }

    @Test
    public void selecById() {
        User select = userMapper.selectById(6);
        System.out.println("更根据用户id查询" + select);
    }

    @Test
    public void update1() {
        User user = new User();
        user.setAge(25);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", 6);
        int updateById = userMapper.update(user, queryWrapper);
        System.out.println("更新条数  " + updateById);
    }

    @Test
    public void update2() {
        UpdateWrapper<User> UpdateWrapper = new UpdateWrapper<>();
        UpdateWrapper.eq("id", 6).set("age", 5);
        int updateById = userMapper.update(null, UpdateWrapper);
        System.out.println("更新条数  " + updateById);
    }

    @Test
    public void deletebyId() {
        int deleteById = userMapper.deleteById(5);
        System.out.println("受影响行数 " + deleteById);
    }

    @Test
    public void deletebyMap() {
        Map<String, Object> columnMap = new HashMap<String, Object>();
        columnMap.put("name", "小豪");
        columnMap.put("age", 20);
//将columnMap中的元素设置为删除的条件,多个之间为and关系

        int i = userMapper.deleteByMap(columnMap);
        System.out.println("受影响行数 " + i);
    }

    /**
     * 根据 entity 条件,删除记录
     * queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
     *
     * @param
     */
    @Test
    public void delete() {
        User user = new User();
        user.setName("小华");
        user.setAge(20);
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        int delete = userMapper.delete(queryWrapper);
        System.out.println("受影响行数" + delete);
    }

    /**
     * 删除(根据ID 批量删除)
     * idList 主键ID列表(不能为 null 以及 empty)
     *
     * @param
     */
    @Test
    public void deleteBatchIds() {
        // 删除(根据ID 批量删除)
        int deleteBatchIds = userMapper.deleteBatchIds(Arrays.asList(15, 17));
        System.out.println("受影响行数 " + deleteBatchIds);
    }

    /**
     * 根据 ID 查询
     * <p>
     * id 主键ID
     */
    @Test
    public void seletebyId() {
        User selectById = userMapper.selectById(16);
        System.out.println("根据ID查询 " + selectById);
    }

    /**
     * 查询(根据ID 批量查询)
     * idList 主键ID列表(不能为 null 以及 empty)
     *
     * @param
     */
    @Test
    public void selectBatchIds() {
        List<User> users = userMapper.selectBatchIds(Arrays.asList(16, 18));
        for (User user : users) {
            System.out.println(user);
        }
    }

    /**
     * 愿我们十二月份如烟花一样灿烂
     *We
     * @param
     */
    @Test
    public void live() {
        System.out.println("愿我们的十二月份如烟花一样灿烂           ");
    }

    /**
     * 根据 Wrapper 条件,查询总记录数
     * queryWrapper 实体对象封装操作类(可以为 null)
     *
     * @param
     */
    @Test
    public void selectOne() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper.eq("name", "小明");
        User selectOne = userMapper.selectOne(queryWrapper);
        System.out.println("根据添加查询" + selectOne);
    }

    /**
     * 根据 Wrapper 条件,查询总记录数
     * queryWrapper 实体对象封装操作类(可以为 null)
     *
     * @param
     */
    @Test
    public void selectCount() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age", 20); //年龄大于20
        Integer selectCount = userMapper.selectCount(queryWrapper);
        System.out.println("查询是总数量" + selectCount);
    }

    /**
     * 根据 entity 条件,查询全部记录
     * queryWrapper 实体对象封装操作类(可以为 null)
     *
     * @param
     */
    @Test
    public void selectList() {
        List<User> users = this.userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void selectPage() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("age", 2); //like模糊查询
        /**
         *  分页构造函数
         *
         * @param current 当前页
         * @param size    每页显示条数
         */
        Page<User> page = new Page<>(1, 1);

        IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
        System.out.println("数据总条数" + iPage.getTotal());
        System.out.println("总页数" + iPage.getPages());
        System.out.println("当前页数" + iPage.getCurrent());

        List<User> users = iPage.getRecords();
        for (User user : users) {
            System.out.println(user);
        }
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello World呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值