JavaMybatisBaseMapper用法

package com.sen.MybatisPlus.MybatisPlus;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sen.MybatisPlus.MybatisPlus.entity.User;
import com.sen.MybatisPlus.MybatisPlus.mapper.UserMapper;
import org.junit.jupiter.api.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;
 
@RunWith(SpringRunner.class)
@SpringBootTest
class MybatisPlusApplicationTests {
 
    @Autowired
    private UserMapper userMapper;
 
    /**
     * 查询所有数据
     * UserMapper 中的 selectList() 方法的参数
     * 为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件(条件构造器)
     */
    @Test
    public void selectList() {
        List<User> list = userMapper.selectList(null);
        list.forEach(System.out::println);
    }
 
    /**
     * 根据 entity 条件,查询一条记录
     * 其实 QueryWrapper 条件构造器(相当于给SQL的条件语句)
     * selectOne() 方法查询必须有且只能查询一条记录,多一条会报错。
     */
    @Test
    public void selectOne() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //查询名字为 Tom 的一条记录
        queryWrapper.eq("name","Tom");
        User user = userMapper.selectOne(queryWrapper);
        System.out.println(user);
    }
 
    /**
     * 根据主键ID查询数据
     * 查询主键id=2 的一条数据,只能查询一个主键的数据不能多个
     */
    @Test
    public void selectById() {
        User user = userMapper.selectById(2);
        System.out.println(user);
    }
 
    /**
     * 根据 List 的 ID 集合 查询对应的用户list
     */
    @Test
    public void selectBatchIds() {
        List<User> list = userMapper.selectBatchIds(Arrays.asList(5, 3, 1));
        list.forEach(System.out::println);
    }
 
    /**
     * 查询(根据 columnMap 条件),查询年龄为20岁的所有记录
     *
     * 注意:建议尽量减少使用map这种方式。
     * 因为可能字段名可能存在修改的情况,
     * 如果,项目开发一段时间后,再修改,影响太大
     */
    @Test
    public void selectByMap() {
        Map<String, Object> map = new HashMap<>();
        map.put("age", "20");
        List<User> list = userMapper.selectByMap(map);
        list.forEach(System.out::println);
    }
 
    /**
     * 查询大于20岁的学生,名称中包含“J”的人,带条件判断的,可以采用这种方式
     * SELECT * FROM user WHERE (name LIKE ? AND age > ?)
     * gt()方法 相当于:大于 > 但没有等于=
     */
    @Test
    public void selectListWrapper() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", "J");//格式:(字段,值)
        queryWrapper.gt("age", "19"); //查询不小于20岁
        List<User> list = userMapper.selectList(queryWrapper);
        list.forEach(System.out::println);
    }
 
    /**
     * 根据 Wrapper 条件,查询全部记录。
     * 查询名字含有 a 的,且年龄大于等于20。
     * ge()方法 相当于: 大于等于 >= 。
     * like()方法  相当于: NOT LIKE '%值%' 。
     */
    @Test
    public void selectMaps(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","a");
        queryWrapper.ge("age","20");
        List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);
        maps.forEach(System.out::println);
    }
    
 
    //分页查询需要需要在项目中加入分页插件,下文介绍有-------
    /**
     * 根据 entity 条件,查询全部记录(并翻页)。
     * 查询年龄大于 18 且 小于等于30 岁的所有记录,分 3 条数记录为一页
     * gt()方法 相当于: 大于 > 。
     * le()方法 相当于: 小于等于 <= 。
     */
    @Test
    public void selectPage(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age","18");
        queryWrapper.le("age","30");
        //第一个参数表示当前页
        //第二个参数表示当前页显示多少条
        //第三个参数是否查询count
        Page<User> page = new Page<>(1,3);
        Page<User> userIPage = userMapper.selectPage(page, queryWrapper);
        List<User> records = userIPage.getRecords();
        records.forEach(System.out::println);
    }
 
 
    /**
     * 根据 Wrapper 条件,查询全部记录(并翻页)
     */
    @Test
    public void selectMapsPage() {
        QueryWrapper<User> query = new QueryWrapper<User>();
        //第一个参数表示当前页
        //第二个参数表示当前页显示多少条
        Page<Map<String, Object>> page = new Page<>(2, 3);
        Page<Map<String, Object>> maps = userMapper.selectMapsPage(page, query);
        maps.getRecords().forEach(System.out::println);
 
    }
 
 
    /**
     * 根据 Wrapper 条件,查询总记录数
     * 查询一共有多少条数据记录
     */
    @Test
    public void selectCount(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        Integer count = userMapper.selectCount(queryWrapper);
        System.out.printf("一共有" + String.valueOf(count) + "条记录");
    }
 
}

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值