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 测试接口;

posted on 2020-10-09 17:22  java先生  阅读(83)  评论(0编辑  收藏  举报