文章目錄
- 【README】
- 【1】springboot集成mybatis-plus配置
- 【1.1】目錄結構
- 【相關說明】
- 【1.2】代碼示例
- 【pom.xml】
- 【application.properties】
- 【MybatisPlusNoteController】
- 【UserAppService】
- 【UserMapper】
- 【UserPO】
- 【建表語句】
- 【2】演示
【README】
本文代碼參見: https://github.com/TomJourney/mybatis-plus-test
本文集成了springboot與mybatis-plus,并提供了一個mybatis-plus的簡單應用;
【使用MyBatisPlus的關鍵】springboot集成了mybatis的基礎上,使用mybatis-plus就2步:
- 步驟1)引入mybatis-plus依賴,刪除 mybatis-spring-boot-starter 依賴;
- 步驟2)業務Mapper如UserMapper繼承MyBatis-Plus中的BaseMapper;
【pom.xml中spring-mybatis與mybaits-plus依賴配置】
<!-- mybatis conf (新增mybatis-plus-boot-starter依賴,需要把mybatis-spring-boot-starter注釋或刪除,否則報包沖突)-->
<!-- <dependency>-->
<!-- <groupId>org.mybatis.spring.boot</groupId>-->
<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!-- <version>3.0.3</version>-->
<!-- </dependency>-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.12</version>
</dependency>
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version>
</dependency>
【1】springboot集成mybatis-plus配置
【1.1】目錄結構
【相關說明】
本文項目使用了springboot, lombok,mybatis-plus;采用不規范的三層架構(為了求快),正式的生產環境不要參考本文代碼;
補充:規范的代碼應該是4層架構,包括adapter,app,domain,infra (有興趣的同學參考ddd);
【1.2】代碼示例
【pom.xml】
<?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>3.3.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.tom.studynote</groupId><artifactId>mybatis-plus-test</artifactId><version>0.0.1-SNAPSHOT</version><name>mybatis-plus-test</name><description>mybatis-plus-test</description><url/><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--【數據庫】數據庫連接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.11</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.6.2</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.6.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis conf (新增mybatis-plus-boot-starter依賴,需要把mybatis-spring-boot-starter注釋或刪除,否則報包沖突)--><!-- <dependency>--><!-- <groupId>org.mybatis.spring.boot</groupId>--><!-- <artifactId>mybatis-spring-boot-starter</artifactId>--><!-- <version>3.0.3</version>--><!-- </dependency>--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.12</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
【application.properties】
server.port = 8081# spring datasource conf
spring.datasource.url=jdbc:mysql://localhost:3306/mywarn?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource# druid
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000# mybatis conf
mybatis.mapper-locations=classpath:com/mybatisplustest/infrastructure/dao/**/*.xml
mybatis.config-location=classpath:mybatis-config.xml
check-config-location=true# template path
spring.web.resources.static-locations=classpath:/templates# mybaits-plus
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
【TomMybatisPlusNoteApplication】
@SpringBootApplication
@MapperScan(basePackages = {"com.tom.study.mybatisplustest.infrastructure.dao"})
public class TomMybatisPlusNoteApplication {public static void main(String[] args) {SpringApplication.run(TomMybatisPlusNoteApplication.class, args);}
}
【MybatisPlusNoteController】
@RestController
@RequestMapping("/mybatis-plus-note")
public class MybatisPlusNoteController {@Autowiredprivate UserAppService userAppService;@GetMapping("/user/{id}")public UserPO findUserById(@PathVariable("id") String id) {return userAppService.findUserById(id);}@PostMapping(path = "/add-user", consumes = "application/json")public void addUser(@RequestBody UserPO userPO) {userAppService.saveNewUser(userPO);}
}
【UserAppService】
@Service
public class UserAppService {@AutowiredUserMapper userMapper;public UserPO findUserById(String id) {return userMapper.selectById(id);}public void saveNewUser(UserPO UserPO) {userMapper.insert(UserPO);}
}
【UserMapper】
【關鍵】業務Mapper-UserMapper只需要繼承BaseMapper即可使用mybatis-plus 提供的api ;
public interface UserMapper extends BaseMapper<UserPO> {
}
【UserPO】
@Data
@TableName("user_tbl")
public class UserPO {private Long id;private String name;private String mobilePhone;private String addr;
}
【建表語句】
-- mywarn.user_tbl definitionCREATE TABLE `user_tbl` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用戶名稱',`mobile_phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '移動電話',`addr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',`user_state` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用戶狀態/ON-在線/OFF-離線',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用戶表';
【2】演示
請求路徑:localhost:8081/mybatis-plus-note/add-user
報文:
{"id": 10,"name": "user10","mobilePhone": "17712340010","addr": "成都天府三街010號"
}