当前位置:   article > 正文

MyBatis-Plus CURD查询入门_mybatis plus cursor

mybatis plus cursor
1.创建SpringBoot项目,导入MyBatis-Plus依赖
<!--MyBatis-Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
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());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  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());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  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));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

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

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();
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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());

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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);

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

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

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

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

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

<!-- 资源配置 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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());
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/525237
推荐阅读
相关标签
  

闽ICP备14008679号