MybatisPlus基础用法示例

原文地址----https://gitee.com/lihua3712/practice/tree/master/mybatis-plus/src/test/java/com/mybatisplus

一、基础方法的使用

package com.mybatisplus;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mybatisplus.mapper.UserMapper;
import com.mybatisplus.entity.User;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

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

@SpringBootTest
class MybatisPlusApplicationTests {

    @Autowired
    private UserMapper userMapper;


    @Test
    public void contest() {
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    /**
     * 查询操作
     */
    @Test
    public void select() {
        System.err.println("-------------1-----------------");

        List<User> users1 = userMapper.selectList(null);
        users1.forEach(System.out::println);

        System.err.println("-------------2-----------------");

        // 1、查询用户信息
        User user2 = userMapper.selectById(1L);
        System.out.println(user2);

        System.err.println("--------------3----------------");

        List<User> users3 = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users3.forEach(System.out::println);

        System.err.println("--------------4----------------");

        HashMap<String, Object> objectObjectHashMap = new HashMap<>();
        objectObjectHashMap.put("name", "Macrohua");
        objectObjectHashMap.put("age", 3);
        List<User> users4 = userMapper.selectByMap(objectObjectHashMap);
        users4.forEach(System.out::println);

        System.err.println("--------------5----------------");
    }


    /**
     * 测试分页查询
     */
    @Test
    public void testPage() {
        //参数一:当前页
        //参数二:页面大小
        //使用了分页插件之后,所有的分页操作也变得简单的!
        Page<User> page = new Page<>(2, 2);
        IPage<User> userIPage = userMapper.selectPage(page, null);
        System.out.println("userIPage.getTotal() = " +userIPage.getTotal());
        System.out.println("userIPage.getCurrent() = " +userIPage.getCurrent());
        System.out.println("userIPage.getSize() = " +userIPage.getSize());
        System.out.println("userIPage.getPages() = " +userIPage.getPages());
        userIPage.getRecords().forEach(System.out::println);
    }


    @Test
    public void insert() {
        User user = new User();
        user.setName("Macrohua");
        user.setAge(99);
        user.setEmail("Macrohua");
        int insert = userMapper.insert(user);
        System.out.println(insert);
    }

    @Test
    public void update() {
        User user = new User();
        user.setName("lihua");
        user.setAge(18);
        user.setId(14L);
        int insert = userMapper.updateById(user);
        System.out.println(insert);
    }

    /**
     * 物理删除
     */
    @Test
    public void delete() {
        int insert = userMapper.deleteById(13L);
        System.out.println(insert);

        System.err.println("--------------1---------------");

        int i = userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));
        System.out.println(i);

        System.err.println("---------------2--------------");


        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
        stringObjectHashMap.put("name", "lihua");
        int i1 = userMapper.deleteByMap(stringObjectHashMap);
        System.out.println(i1);

        System.err.println("---------------3--------------");

    }

    /**
     * 逻辑删除
     */
    @Test
    public void logicDelete() {
        int insert = userMapper.deleteById(4L);
        System.out.println(insert);

        int batchIds = userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));
        System.out.println(batchIds);
    }


    /**
     * 测试乐观锁成功!
     */
    @Test
    public void testOptimisticLocker() {
        // 1、查询用户信息
        User user = userMapper.selectById(1L);
        // 2、修改用户信息
        user.setName("kuangshen");
        user.setEmail("24736743@qq.com");
        // 3、执行更新操作
        userMapper.updateById(user);
    }

    /**
     * 测试乐观锁失败!多线程下
     */
    @Test
    public void testOptimisticLocker2() {
        //线程1
        User user = userMapper.selectById(1L);
        user.setName("lihua1111");
        user.setEmail("111111@qq.com");

        //模拟另一个线程执行了插入操作
        User user1 = userMapper.selectById(1L);
        user1.setName("lihua22222");
        user1.setEmail("22222@qq.com");
        userMapper.updateById(user1);

        //自旋锁进行多次尝试操作
        userMapper.updateById(user);
    }
}

二、Wrapper的使用

package com.mybatisplus;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mybatisplus.mapper.UserMapper;
import com.mybatisplus.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;
import java.util.Map;

/**
 * @version v1.0.0
 * @Copyright (C), 2016-2021, 财税通软件有限公司
 * @Author: lihua
 * @Date: 2021-10-21 16:49  星期四
 * @Description:条件构造器测试
 */
@SpringBootTest
public class WrapperTest {

    @Autowired
    private UserMapper userMapper;


    @Test
    public void test1() {
        // 查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.isNotNull("name")
                .isNotNull("email")
                .ge("age", 12);
        userMapper.selectList(wrapper).forEach(System.out::println); // 和我们刚才学习 的map对比一下
    }

    @Test
    public void test2() {
        // 查询名字狂神说
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("name", "lihua22222");
        User user = userMapper.selectOne(wrapper); // 查询一个数据,出现多个结果使用List 或者 Map
        System.out.println(user);
    }


    @Test
    public void test3() {
        // 查询年龄在 20 ~ 30 岁之间的用户
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.between("age", 20, 30); // 区间
        Integer count = userMapper.selectCount(wrapper);// 查询结果数
        System.out.println(count);
    }


    /**
     * 模糊查询
     */
    @Test
    public void test4() {
        // 查询年龄在 20 ~ 30 岁之间的用户
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 左和右 t%
        wrapper.notLike("name", "e").likeRight("email", "t");
        List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
        maps.forEach(System.out::println);
    }

    /**
     * 模糊查询
     */
    @Test
    public void test5() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // id 在子查询中查出来
        wrapper.inSql("id", "select id from user where id<3");
        List<Object> objects = userMapper.selectObjs(wrapper);
        objects.forEach(System.out::println);
    }

    @Test
    public void test6() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 通过id进行排序
        wrapper.orderByAsc("id");
        List<User> users = userMapper.selectList(wrapper);
        users.forEach(System.out::println);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

macrohua

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

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

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

打赏作者

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

抵扣说明:

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

余额充值