0
点赞
收藏
分享

微信扫一扫

Springboot 整合Mybatis-plus

A邱凌 2022-11-18 阅读 163

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

举报

相关推荐

0 条评论