MyBatis-Plus CURD查询入门

1.创建SpringBoot项目,导入MyBatis-Plus依赖
<!--MyBatis-Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>
2.编写实体类
  • @TableName(value):value对应当前实体类对应数据库的表名
  • @TableField:当前属性在数据库是一个Id列
  • @TableField(exist = false):true代表当前列在数据库对应的名,false代表当前列在数据库里面没有
3.编写接口类 接口类 继承 BaseMapper<?>
4.查看MyBatis-Plus自身支持数据库的一系列方法
  • BaseMapper 类
  • AbstractWrapper 类
5.编写CURD查询
  1. 查询(根据ID 批量查询)主键ID列表(不能为 null 以及 empty)

    //根据ID批量查询
    @Test
    public void test4(){
        //批量查询id
        List<Long> list=new ArrayList<>();
        list.add(1087982257332887553L);
        list.add(1088250446457389058L);
    
        List<User> users = userDao.selectBatchIds(list);
        System.out.println(users.size());
    }
    
  2. 查询(根据 columnMap 条件)表字段 map 对象

    //根据Map字段中key作为条件 value作为值来查询
    @Test
    public void test5(){
        Map map=new HashMap();
        map.put("age",40);
        map.put("name","大boss");
        List list = userDao.selectByMap(map);
        System.out.println("list = " + list.size());
    }
    
  3. 根据 entity 条件,查询一条记录 实体对象封装操作类(可以为 null)

    //1.名字中包含雨 并且 年龄小于 40
    @Test
    public void test6(){
        //这里必须使用 QueryWrapper来当作参数
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","雨").lt("age",40);
    
        List<User> users = userDao.selectList(queryWrapper);
        users.forEach(user -> System.out.println("user = " + user));
    }
    //2.名字中包含雨 并且年龄 大于20 且小于40 并且email不为空
    @Test
    public void test7(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.like("name","雨").between("age",20,40).isNotNull("email");
    
        List<User> users = userDao.selectList(wrapper);
        users.forEach(user -> System.out.println("user = " + user));
    }
    //3.查询 姓王 或者 年龄大于25 按照年龄降序排列,年龄相同 按照 id升序排列
    @Test
    public void test8(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.likeRight("name","王")
                .or().ge("age",25).orderByDesc("age")
                .orderByAsc("id");
        List<User> users = userDao.selectList(wrapper);
    
        users.forEach(user -> System.out.println("user = " + user));
    }
    

剩下的查询基本都一样了,建议大家多看看

BaseMapper 类中 的方法
AbstractWrapper 类中的方法

6.使用MyBatis-Plus分页插件

6.1:创建configuration 目录 —> 创建configuration文件

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class configuration {

    /**
     * MyBatis-Plus 分页插件
     * */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

}

6.2:使用MyBatis-Plus自己定义的分页

//分页查询
    @Test
    public void test25(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.like("age",0);

        //注意这里三个参数
        //第1个参数 显示当前的页
        //第2个参数 当前页显示几条数据
        //第3个参数 是否计算总行数 默认true, false代表不计算总条数
        Page<User> page = new Page<>(1,2,true);

        Page<User> page1 = userDao.selectPage(page, wrapper);
        System.out.println("总页数 = " + page1.getPages());
        System.out.println("总记录数 = " + page1.getTotal());
        System.out.println("当前页数 = " + page1.getCurrent());
        List<User> list = page1.getRecords();
        System.out.println("list = " + list.size());

    }

6.3:我们自己定义一个分页
1.首先我们在DAO层定义一个接口

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhang.demomp.entity.User;
import org.apache.ibatis.annotations.Param;

public interface IUserDao extends BaseMapper<User> {

    //自定义SQL分页
    IPage<User> selectMyPage(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> queryWrapper);

}

2.定义mapper文件夹 用来放.xml文件

<select id="selectMyPage" resultType="com.zhang.demomp.entity.User">
        select *from z_use  ${ew.customSqlSegment}
    </select>

3.application.yml文件中加入 .xml文件所在的地址

#配置.xml所在的地址
mybatis-plus:
  mapper-locations: classpath*:com/zhang/demomp/mapper/*.xml

4.pom文件中配置这个(注意这个配置 在build下面)

<!-- 资源配置 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

5.编写测试用例

//测试自己编写的分页
    @Test
    public void test26(){
        //使用Lambda查询
        //LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery(User.class);
        //wrapper.eq(User::getAge,0);
        QueryWrapper<Class<User>> query = Wrappers.query(User.class);
        wrapper.gt("age",0);
        Page<User> page = new Page<>(1,2);
        IPage<User> page1 = userDao.selectMyPage(page, wrapper);
        System.out.println("page1 = " + page1.getRecords().size());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

往日时光--

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

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

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

打赏作者

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

抵扣说明:

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

余额充值