mybatis-plus使用

目录

1、简介

2、集成

3、使用

3.1、添加操作

3.2、删除操作

3.3、修改操作

3.4、查询操作

3.4.1、简单查询

3.4.2、分页查询

3.4.3、复杂查询 

4、自定义SQL


1、简介

  • 官网:http://mp.baomidou.com/
  • MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改 ,为简化开发、提高效率而生。

2、集成

1、创建数据库和表

2、创建springboot工程

3、引入mybatis-plus、数据源依赖

        注意:

                引入mybatis-plus依赖就不要再引入mybatis了以免冲突

                在项目中使用Lombok可以减少很多重复代码的书写。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--lombok 小辣椒-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--引入mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!--引入数据源-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

4、设置配置文件(application.properties)

#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus
spring.datasource.username=root
spring.datasource.password=123456

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#xml扫描路径

mybatis-plus.mapper-locations=classpath:/mapper/**.xml

5、创建实体类

  •  创建与数据库对应的实体,遵循驼峰原则前提下mybatis-plus会自动映射,表名对应类名,字段名对应属性名
  • 如有特殊需求要求不遵循驼峰命名那么需要借助两个注解:
    • @TableName("表名")放在类上
    • @TableField("字段名")放在属性上

6、mapper接口层继承【BaseMapper<实体类名>】

        注意:注解【@Repository】可以加也可以不加,但是加上在【@Autowired】调用时不会有红线,建议加上

7、在配置文件中加上扫描注解@MapperScan("mapper包所在路径")

3、使用

3.1、添加操作

  • 使用的方法为【insert()】,传入的是一个对象,默认自带主键策略,默认主键回填

  • 主键策略
    • 配置方法:在主键上面添加注解【@TableId(type = idType.主键策略)】
    • 主键策略:
      • assign_id【默认】:生成一个19为数字的ID,后面比前面大【递增,可用于排序】
      •  assign_uuid:生成为一个带数字和字母的ID,为字符串类型
      • auto:主键自增长,需要表主键设置自动增长,且主键类型与实体主键属性均为int
      • input:这种方式就是自己set一个 主键值
      • none:不设置主键值

3.2、删除操作

  • 根据ID删除

        方法:delectById(ID值);

  • 根据条件删除

        方法:deleteByMap(封装条件的Map集合)

  • 批量删除

        方法:deleteByI(ID的list集合)

  • 逻辑删除

        本质上是修改操作、约定中0代表存在,1代表删除

        实现:在表中添加字段【deleted】,实体类中添加对应的属性且在属性上加上注解【@TableLogic】

 

此时在进行删除操作就是逻辑删 

3.3、修改操作

  • 根据ID进行修改

                方法:updatebyId(带ID的对象); 

3.4、查询操作

3.4.1、简单查询

1、查询全部

        方法:selectList(null);

2、根据ID查询

        方法:selectById(ID值);

3、多个ID批量查询

        方法:selectBatchIds(集合)

4、多个条件查询数据

        方法:selectByMap(Map map)

3.4.2、分页查询

  •  首先需要在配置类中配置分页插件
package com.example.demo.config;

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

@Configuration// 代表是一个配置类
public class mybatisplusConfig {

    /**
     * 分页插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
}
  • 在你的查询方法代码中创建一个page对象,参数分别为当前页与没页记录数,泛型为要查询的实体
  • 调用selectPage()方法,第一个参数为上面的page对象作用是设置分页,第二个条件为查询条件,可参考复杂查询

  • 分页查询之后实际上是不需要返回数据的,因为查询的到的数据已经封装到分页条件【userPage】中了,其中还封装了:
    • 查询结果集合:userPage.getRecords()
    •  当前页:userPage.getCurrent()  
    • 总页数:userPage.getPages()
    • 每页记录数:userPage.getSize()
    • 总记录数:userPage.getTotal()
    • 是否有下一页:userPage.hasNext()
    • 是否有上一页:userPage.hasPrevious();

3.4.3、复杂查询

1、使用复杂查询

  •  首先需要先new一个QueryWrapper对象用于封装条件
  • 使用对象封装条件,见下文,封装条件时第一个参数为表中字段,第二个参数为条件
  • 如果有多个条件多点几次就好
  • 将对象作为参数放入查询语句中
  • 以下文条件大于等于为例:用户年龄大于等于20的

 2、条件

1、ge、gt、le、lt

  • ge:大于等于
  • gt:大于
  • le:小于等于
  • lt:小于

2、eq、ne、

  • eq:等于
  • ne :不等于

3 、between、notBetween

  • between:范围内,包含大小边界
  • notBetween:不在范围内

4、like、notLike、 LikeLeft、LikeRight

  • like:模糊查询
  • notlike:排除像的
  • likeleft:%在左边
  • likeRight:%在右边

5、orderBy、orderByDesc、orderByASC

  • orderByDesc:降序
  • orderByAsc:升序

6、last:

        作用:在执行的sql语句后面拼接一个语句

        可以用于分页,或者返回固定条数数据

        不要加参数要写固定值,否则有注入风险

7、select 

        查询指定列

4、自定义SQL

配置方式有多种,只说最简单的一种,不要为难自己想学会全部没啥用

1、在配置文件中扫描我们的xml配置的位置

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#xml扫描路径
mybatis-plus.mapper-locations=classpath:/mapper/**.xml

2、我们将UserMapper.xml放在resource下的mapper目录中

3、剩下的就和mybatis一样,毕竟mybatisPlus只升级不改动

       


版权声明:本文为wangjiziji123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>