栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis Plus(初识一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis Plus(初识一)

Mybatis Plus简介

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis
的基础上只做增强不做改变,避免了我们重复CRUD语句。

搭建使用环境(SpringBoot)

1.创建一个简单点的maven工程
2.在pom.xml中引入依赖



    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.0.RELEASE
        
    
    
    4.0.0

    MybatisPlusDemo

    
        UTF-8
        UTF-8
        1.8
        3.3.2
        true
    
    
        
            org.springframework.boot
            spring-boot-starter
        
        
            com.h2database
            h2
            runtime
        
        
            com.baomidou
            mybatis-plus-boot-starter
            ${mybatisplus.version}
        
        
            org.assertj
            assertj-core
            test
        
        
            org.projectlombok
            lombok
            provided
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        


        
            com.github.pagehelper
            pagehelper
            5.1.11
        


    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

3.在资源目录下创建application.yml配置文件和目录

在application.yml中写上数据库的配置和Mybatis扫描

# DataSource Config
spring:
  datasource:
    driver-class-name: org.h2.Driver
    schema: classpath:db/schema-h2.sql
    data: classpath:db/data-h2.sql
    url: jdbc:h2:mem:test
    username: root
    password: test
# Logger Config
logging:
  level:
   com.da: debug

    # 配置mybatis plus
mybatis-plus:
  type-aliases-package: com.da.domain #别名搜索
  mapper-locations: classpath:/mapper
ASSIGN_ID(3)

排除实体类中非表字段
使用 @TableField(exist = false) 注解

Mybatis Plus 内置插入方法
@Test
    public void insert(){
       User user=new User();
       user.setId(26L);
       user.setName("我是insert");
       user.setAge(23);
       user.setEmail("da@163.com");
       int insert = userMapper.insert(user);
       if(insert>0){
           System.out.println("插入成功!!!");
           List users = userMapper.selectList(null);
           users.forEach(user1 -> {
               System.out.println(user1);
           });
       }else{
           System.out.println("插入失败!!");
       }

   }

结果:

Mybatis Plus 内置查询方法
  @Test
    public void select(){
       //查询全部
       List users = userMapper.selectList(null);
       users.forEach(user ->{
           System.out.println(user);
       });
       System.out.println("===========================根据条件查询=====================");
       //根据条件查询
       List users1 = userMapper.selectList(new QueryWrapper().like("name", "J"));
       users1.forEach(user ->{
           System.out.println(user);
       });
       //根据条件查询一个
       System.out.println("===========================根据条件查询一个=====================");

       User user = userMapper.selectOne(new QueryWrapper().eq("name", "Biie"));
       System.out.println(user);

       //根据主键查询
       System.out.println("===========================根据主键查询一个=====================");

       User user1 = userMapper.selectById(2);
       System.out.println(user1);
   }

结果

Mybatis Plus 内置修改方法
  @Test
    public void update(){
       User user=new User();
       user.setId(5L);
       user.setName("我修改后的数据");
       user.setAge(230);
       user.setEmail("dada@163.com");
       //根据id修改
       System.out.println("根据id修改");
        userMapper.updateById(user);
       User user1 = userMapper.selectById(5);
       System.out.println(user1);
       System.out.println("=======================根据条件修改方式1===============================");
   userMapper.update(null, Wrappers.update().set("email","@update.com").like("name","B"));
       List users = userMapper.selectList(new QueryWrapper().like("name", "B"));
       users.forEach(user11 -> {
           System.out.println(user11);
       });
       user.setName("根据条件修改方式2");
       System.out.println("=======================根据条件修改方式2===============================");
       userMapper.update(user, Wrappers.update().eq("id","5"));
       List users1 = userMapper.selectList(new QueryWrapper().eq("id", "5"));
       users1.forEach(user11 -> {
           System.out.println(user11);
       });
   }

结果

Mybatis Plus 内置删除方法
@Test
public void delete(){
       //根据Id删除
    int i = userMapper.deleteById(1);
if(i>0){
    System.out.println("删除成功!!!");
    userMapper.selectList(null).forEach(user -> {
        System.out.println(user);
    });
}

//根据条件删除方式1
    int delete = userMapper.delete(new QueryWrapper().like("name", "J"));
if(delete>0){
    System.out.println("根据条件删除方式1删除成功");
    userMapper.selectList(null).forEach(user -> {
        System.out.println(user);
    });
}

//根据条件删除方式2
    int delete1 = userMapper.delete(Wrappers.query().like("name", "T"));
    if(delete1>0){
        System.out.println("根据条件删除方式2删除成功");
        userMapper.selectList(null).forEach(user -> {
            System.out.println(user);
        });
    }

   }

结果

分页

在pom.xml中引入pageHelper分页依赖

 
            com.github.pagehelper
            pagehelper
            5.1.11
        

在config包中新键分页配置类
MybatisPlusConfig

@Configuration
public class MybatisPlusConfig {
    
    @Bean
    public PaginationInterceptor paginationInterceptor() {
// 开启 count 的 join 优化,只针对 left join !!!
        return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true));
    }


    

    @Bean
    public PageInterceptor pageInterceptor() {
        return new PageInterceptor();
    }

}
Mybatis Plus 内置分页
   @Test
    public void page(){
       System.out.println("----baseMapper自带分页");
       //第一个参数是当前页,第二参数是每页数
       Pagepage=new Page<>(1,5);
       IPage userPage = userMapper.selectPage(page, new QueryWrapper());
       System.out.println("当前页码:"+userPage.getCurrent());
       System.out.println("每页数:"+userPage.getSize());
       System.out.println("总条数"+userPage.getTotal());
       //获取分页的结果
      userPage.getRecords().forEach(user ->{System.out.println(user);});

   }

结果

自定义xml分页
application.yml配置文件

    # 配置mybatis plus
mybatis-plus:
  type-aliases-package: com.da.domain #别名搜索
  mapper-locations: classpath:/mapper
    public IPage selectUserByPage(@Param("p") IPage page, @Param("c") User
            conditioin);
    public ListselectUserByPage2(User u);
}

UserMapper.xml映射文件




    
        select * from user2
    
    




测试

  @Test
    public void testPage(){
       //自定义XML分页查询
       Pagepage=new Page<>(1,5);
       User user=new User();
       user.setEmail("te");
       user.setAge(331);
       IPage userPage = userMapper.selectUserByPage(page, user);
       System.out.println("当前页码:"+userPage.getCurrent());
       System.out.println("每页数:"+userPage.getSize());
       System.out.println("总条数"+userPage.getTotal());
       //获取分页的结果
       userPage.getRecords().forEach(user1 ->{System.out.println(user1);});

   } 

结果

pageHelper分页

开启扫描

UserMapper.xml映射文件


测试

@Test
    public void pageHelper(){
       //自定义XML分页查询
       User user=new User();
       user.setEmail("te");
       user.setAge(331);
       PageInfopage= PageHelper.startPage(1,5).doSelectPageInfo(
               ()-> userMapper.selectUserByPage2(user));

       System.out.println("总行数=" + page.getTotal());
       System.out.println("当前页=" + page.getPageNum());
       System.out.println("每页行数=" + page.getPageSize());
       System.out.println("总页数=" + page.getPages());
       System.out.println("起始行数=" + page.getStartRow());
       System.out.println("是第一页=" + page.isIsFirstPage());
       System.out.println("是最后页=" + page.isIsLastPage());
       System.out.println("还有下一页=" + page.isHasNextPage());
       System.out.println("还有上一页=" + page.isHasPreviousPage());
       System.out.println("页码列表" + Arrays.toString(page.getNavigatepageNums()));
      page.getList().forEach(System.out::println);

   }

结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号