zoukankan      html  css  js  c++  java
  • Springboot 整合Mybatis-plus

    mybatis-plus 官方文档 

    mybatis-plus 配置文档

    1.添加pom引用

    maven的引用很简单,官方已经给出starter,不需要我们考虑它的依赖关系了,此处使用的是2.1.1和3.3.2,版本号要对应,否则会报错。

            <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.2</version>
            </dependency>

    2.配置

    #mybatis-plus
    # xml扫描:多个以逗号或者分好分隔
    mybatis-plus.mapper-locations=classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml
    # 实体类扫描:多个以逗号或者分好分隔
    mybatis-plus.type-aliases-package=com.microplay.*.entity,com.microplay.*.*.entity
    mybatis-plus.configuration.auto-mapping-behavior: full
    # 是否开启自动驼峰命名规则
    mybatis-plus.configuration.map-underscore-to-camel-case: true
    mybatis-plus.configuration.log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 数据库配置
    # 驼峰下划线转换
    mybatis-plus.configuration.db-config.column-underline: true
    # 数据库大写下划线转换
    mybatis-plus.configuration.db-config.capital-mode: true
    # 逻辑删除前
    mybatis-plus.configuration.db-config.logic-not-delete-value: 1
    # 逻辑删除后
    mybatis-plus.configuration.db-config.logic-delete-value: 0

    注意事项:
    需要更改的地方有:文件输出路径(根据项目需要定制),数据源(此类是单独的数据库反向生成代码执行文件,因此springboot的数据源不起作用),包配置,以及一些基本的生成策略;

    官方已经提供了基于springboot的配置,将其拷贝过来放在application.yml中即可使用,此处只是将官方部分的配置删减过一些。其中column-underline: true特别好用,会自动将下划线格式的表字段,转换为以驼峰格式命名的属性。

    # mybatis-plus
    mybatis-plus:
      # xml扫描:多个以逗号或者分好分隔
      mapper-locations: classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml
      # 实体类扫描:多个以逗号或者分好分隔
      type-aliases-package: com.microplay.*.entity,com.microplay.*.*.entity
      global-config:
        db-config:
          id-type: auto
          field-strategy: not_empty
          #驼峰下划线转换
          column-underline: true
          #逻辑删除配置
          logic-delete-value: 0
          logic-not-delete-value: 1
          db-type: mysql
        refresh: false
      configuration:
        cache-enabled: false
        auto-mapping-behavior: full
        # 是否开启自动驼峰命名规则
        map-underscore-to-camel-case: true
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        # 数据库配置
        # 驼峰下划线转换
        db-config.column-underline: true
        # 数据库大写下划线转换
        db-config.capital-mode: true
        # 逻辑删除前
        db-config.logic-not-delete-value: 1
        # 逻辑删除后
        db-config.logic-delete-value: 0

    注意!!!生成后一定记得在spring boot项目中添加mybatis的包扫描路径,或@Mapper注解:

    @SpringBootApplication
    @MapperScan("com.XXX.XXX.mapper") // 这里需要根据项目报名配置
    public class SpringBootMybatisPlusApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootMybatisPlusApplication.class, args);
        }
    }

    @Mapper注解:

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    }

    否则会报:Error creating bean with name 'xxxServiceImpl': Unsatisfied dependency expressed through field 'baseMapper';

    至此,我们的底层增删改查操作全部完毕!下面来编写简单的controller来测试效果。

    3.mybatis-plus分页(可选)

    1.添加配置文件,此处配置文件表示开启mybatis-plus分页功能

    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @EnableTransactionManagement
    @Configuration
    public class MybatisPlusConfig {
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }

    或者:

    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    /**
     * Mybatis-Plus 分页配置
     * 启动类和配置类只需配置一个 @MapperScan
     */
    @Configuration
    @EnableTransactionManagement
    public class MybatisConfig {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            paginationInterceptor.setOverflow(true);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            paginationInterceptor.setLimit(1000);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }

    4.代码测试

    4.1 controller:

    import com.example.model.auto.User;
    import com.example.service.IUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.List;
    
    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private IUserService userService;
    @PostMapping(
    "/getUser") public User getUser(){ return userService.getById(1); } }

    4.2 IUserService

    import com.baomidou.mybatisplus.extension.service.IService;
    import com.example.model.auto.User;

    public interface IUserService extends IService<User> { }

    4.3 UseServiceImpl

    import com.example.model.auto.User;
    import com.example.mapper.auto.UserMapper;
    import com.example.service.IUserService;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    
        @Autowired
        private UserMapper userMapper;
    
    }

    4.4 UserMapper

    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.example.model.auto.User;
    
    public interface UserMapper extends BaseMapper<User> {
    
    }

    4.4 在resources目录下新建mapper文件夹,新建UserMapper.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.XXX.XXX.UserMapper">
    
    
    </mapper>

    4.5 测试接口;

  • 相关阅读:
    常用数据结构之哈希表
    常用数据结构之队列
    常用的数据结构之栈
    常用的数据结构之链表
    Zabbix3.4监控Windows机器CPU使用率
    在Pycharm中导入第三方模块库(诸如:matplotlib、numpy等)
    WARNING: You are using pip version 20.2.4; however, version 20.3.1 is available.
    npm无法安装node-sass的解决方法
    常见的树形结构封装
    Mac安装MySql
  • 原文地址:https://www.cnblogs.com/yang5726685/p/13786918.html
Copyright © 2011-2022 走看看