Mybatis-Plus 基础方法演示

package com.example.demo;

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

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.dao.UserMapper;
import com.example.demo.entity.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;

@SpringBootTest
@RunWith(SpringRunner.class)
public class SelectTests {

    @Autowired
    private UserMapper userMapper;

    /**
     * 根据主键来查
     */
    @org.junit.Test
    public void selectById(){
        User user =
            userMapper.selectById(1L);
        System.out.println(user);
    }

    /**
     * 根据多个id来查询
     */
    @Test
    public void selectByIds(){
        List<String> strings = Arrays.asList("1", "2");
        List<User> users = userMapper.selectBatchIds(strings);
        users.forEach(System.out::println);
    }

    /**
     * 根据map来查
     */
    @Test
    public void selectByMap(){
        //key对应数据库的列名,不是实体类中的属性名。
        Map<String,Object> map=new HashMap<>();
        map.put("name","大boss");
        map.put("age","40");
        List<User> users = userMapper.selectByMap(map);
        System.out.println(users);
    }

    /**
     * 查询名字中包括大并且年龄小于50
     */
    @Test
    public void selectByWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper.like("name","大").lt("age",50);

        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

    /**
     * 查询名字中包括李并且(年龄小于30或者邮箱不为空)
     */
    @Test
    public void selectByWrapper2(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper.likeRight("name","李")
                    .and(wq->wq.lt("age",40).or()
                    .isNotNull("email"));

        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

    /**
     * limit的使用
     */
    @Test
    public void selectByWrapper3(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper.in("age",Arrays.asList(40,15,19)).last("limit 1");

        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

    /**
     *  select选择性得输出字段
     */
    @Test
    public void selectByWrapper4(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        //queryWrapper.select("id","name").like("name","李").lt("age",40);

        //或者用下面的
        queryWrapper.select(User.class,info->!info.getColumn().equals("create_time"));
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

    /**
     * 测试condition
     */
    @Test
    public void selectCondition(){
       String name="";
       String email="x";
       condition(name,email);
    }



    private void condition(String name,String email){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(name),"name",name)
                    .like(StringUtils.isNotBlank(email),"email",email);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

    /**
     * 实体类中的信息出现在where中,比较实用
     */
    @Test
    public void selectByWrapperEntity(){
        User whereUser=new User();
        whereUser.setAge(32);
        whereUser.setName("张三");
        QueryWrapper<User> queryWrapper=new QueryWrapper<>(whereUser);
        //上面和下面这个2选1即可
        //queryWrapper.like("name","张").lt("age",50);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);

    }


    @Test
    public void selectByWrapperAllEq(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        Map<String,Object> params=new HashMap<String,Object>();
        params.put("name","张三");
        params.put("age",null);
        queryWrapper.allEq(params,false);//第二个参数可以去掉参数为null的情况

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

    }

    /**
     * selectMaps的应用场景,不会让你输出的实体中有些属性为null
     * {name=张三, id=2}
     */
    @Test
    public void selectByWrapperMaps(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.select("id","name").like("name","张").lt("age",40);

        List<Map<String,Object>> users = userMapper.selectMaps(queryWrapper);
        users.forEach(System.out::println);

    }

    /**
     * Lambda可以防止误写
     * 我们写"name"的时候可能会写成"nname",但是getName写错了编译都不会通过
     */
    @Test
    public void selectByLambda(){
        LambdaQueryWrapper<User> lambdaQueryWrapper =
            Wrappers.<User>lambdaQuery();
        lambdaQueryWrapper.like(User::getName,"张").lt(User::getAge,50);
        List<User> users = userMapper.selectList(lambdaQueryWrapper);
        users.forEach(System.out::println);

    }

    /**
     * 自定义sql selectAll,对应UserMapper中的selectAll方法
     */
    @Test
    public void selectMy(){
        LambdaQueryWrapper<User> lambdaQueryWrapper =
            Wrappers.<User>lambdaQuery();
        lambdaQueryWrapper.like(User::getName,"张").lt(User::getAge,50);
        List<User> users = userMapper.selectAll(lambdaQueryWrapper);
        users.forEach(System.out::println);

    }

    /**
     * 分页测试
     */
    @Test
    public void selectPage(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.gt("age",18);

        Page<User> page=new Page<User>(0,1);

        IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
        System.out.println("总页数:"+userPage.getPages());
        System.out.println("总记录数:"+userPage.getTotal());
        List<User> records = userPage.getRecords();
        records.forEach(System.out::println);

    }

    @Test
    public void updateByWrapper(){
        UpdateWrapper<User> updateWrapper=new UpdateWrapper<>();
        updateWrapper.eq("name","张三").eq("age",29).set("age",30);
        int rows = userMapper.update(null, updateWrapper);
        System.out.println("影响的记录数:"+rows);
    }

}

AR测试,比较方便。

前提条件:实体类继承Model,

public class User extends Model<User>
package com.example.demo;

import java.time.LocalDateTime;

import com.example.demo.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * ${todo}
 *
 * @date: 2020/11/22
 * @author: Li Bin
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class ARTest {


    @Test
    public void insert(){
        User user=new User();
        user.setName("阿小");
        user.setAge(12);
        user.setCreateTime(LocalDateTime.now());
        user.setEmail("axiao@baomidou.com");
        //user.setId(4L);
        boolean insert = user.insert();
        System.out.println("新增是否成功:"+insert);

    }

    @Test
    public void select(){
        User user=new User();
        user.setId(4L);
        User userSelect = user.selectById(user);
        System.out.println(userSelect);

    }
}
原文地址:https://www.cnblogs.com/jiliunyongjin/p/14020356.html