实战篇:手把手教你spring boot如何整合mybatis-plus,与整合出现问题如何解决

向量数据库关系型数据库NoSQL数据库

picture.image

MyBatis-Plus是一个 MyBati (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

picture.image

  本文教你如何根据官方文档进行引入包,与其如何查看文档和常见问题解决

1.创建一个spring boot 项目,然后引入依赖包

  
plugins {  
 id 'java'  
 id 'org.springframework.boot' version '2.4.2'  
 id 'io.spring.dependency-management' version '1.1.4'  
}  
  
group = 'com.example'  
version = '0.0.1-SNAPSHOT'  
  
java {  
 sourceCompatibility = JavaVersion.VERSION_1_8  
}  
allprojects {  
 repositories {  
 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }  
 maven { url "https://maven.aliyun.com/repository/spring" }  
 maven { url "https://repo.spring.io/milestone/" }  
 }  
}  
  
repositories {  
 mavenCentral()  
}  
dependencies {  
 implementation 'org.springframework.boot:spring-boot-starter'  
 implementation 'org.springframework.boot:spring-boot-starter-web'  
 implementation 'cn.hutool:hutool-all:5.8.16'  
 implementation 'org.springframework.kafka:spring-kafka'  
 implementation 'com.baomidou:mybatis-plus-boot-starter:3.0.1'  
 implementation 'com.h2database:h2:2.2.224'  
 testImplementation 'org.springframework.boot:spring-boot-starter-test'  
}  
  
tasks.named('test') {  
 useJUnitPlatform()  
}

新手一般不知道引包怎么引,或者不知道要用什么版本,这时候我们可以去官网看,一般官网教我们使用,所以介绍先从官网入手,不行再百度,此时我也是看官网来写这篇文章的

  
https://baomidou.com/pages/bab2db/#release

picture.image

2.引入依赖包,我们要选择使用的数据驱动,常用的mysql、oracle、h2等等,本文就用H2本地数据库来进行演示,接下来我们就看官网文档,按照文档来操作

  
https://www.h2database.com/html/cheatSheet.html

picture.image

3.依赖引入后,我们需要添加配置,配置怎么加呢?还是看文档

  
server:  
 port: 9099  
 datasource:  
 driver-class-name: org.h2.Driver  
 url: jdbc:h2:tcp://localhost/~/test  
 username: sa  
 password:  
 initialization-mode: always  
 schema: classpath:db/schema-h2.sql  
 data: classpath:db/data-h2.sql  
 platform: h2  
 h2:  
 console:  
 enabled: true  
      path: /h2-console

picture.image

那你要用h2库,是不是要配置连接地址,账号、密码等等,那你就从官方文档里面找使用配置上相关内容

picture.image

也可以从你引入的包去查看源码,看连接类需要什么配置。

picture.image

4.创建一个实体类

  
package com.example.entity;  
  
import com.baomidou.mybatisplus.annotation.TableName;  
  
/**  
 * @author limingfa  
 * @date 2024/4/25 9:51  
 */  
@TableName("`user`")  
public class User {  
 private Long id;  
 private String name;  
 private Integer age;  
 private String email;  
  
 public Long getId() {  
 return id;  
 }  
  
 public void setId(Long id) {  
 this.id = id;  
 }  
  
 public String getName() {  
 return name;  
 }  
  
 public void setName(String name) {  
 this.name = name;  
 }  
  
 public Integer getAge() {  
 return age;  
 }  
  
 public void setAge(Integer age) {  
 this.age = age;  
 }  
  
 public String getEmail() {  
 return email;  
 }  
  
 public void setEmail(String email) {  
 this.email = email;  
 }  
}  

5.创建UserMapper

  
package com.example.mapper;  
  
import com.baomidou.mybatisplus.core.mapper.BaseMapper;  
import com.example.entity.User;  
import org.springframework.stereotype.Repository;  
  
/**  
 * @author limingfa  
 * @date 2024/4/25 9:51  
 */  
@Repository  
public interface UserMapper extends BaseMapper<User> {  
}  

6.编写controller

  
package com.example.controller;  
  
import com.example.service.DemoService;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
  
  
/**  
 * @author limingfa  
 * @date 2024/4/23 11:49  
 */  
  
@RestController  
public class DemoController {  
 private Logger LOGGER= LoggerFactory.getLogger(DemoController.class);  
  
 @Autowired  
 DemoService demoService;  
  
 @GetMapping("/sendMsg")  
 public void sendMsg(){  
 demoService.sendMsg();  
 }  
  
 @GetMapping("/getUser")  
 public void getUser(){  
 demoService.getUser();  
 }  
}  

7.编写service

  
package com.example.service;  
  
import cn.hutool.json.JSONUtil;  
import com.example.entity.User;  
import com.example.mapper.UserMapper;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.kafka.core.KafkaTemplate;  
import org.springframework.stereotype.Service;  
  
import java.util.List;  
  
import static com.example.common.KafkaTopicConstant.TOPIC_TEST_NAME;  
  
/**  
 * @author limingfa  
 * @date 2024/4/24 11:40  
 */  
@Service  
public class DemoService {  
 private static final Logger LOGGER = LoggerFactory.getLogger(DemoService.class);  
 @Autowired  
 private KafkaTemplate<String, String> kafkaTemplate;  
 @Autowired  
 private UserMapper userMapper;  
  
 public void sendMsg() {  
 //todo 作一些逻辑  
 kafkaTemplate.send(TOPIC_TEST_NAME, "test1", "sdfsf");  
 LOGGER.info("发送消息完成");  
 }  
  
 public void getUser() {  
 List<User> userList = userMapper.selectList(null);  
 LOGGER.info("查询到的数据为{}", JSONUtil.toJsonStr(userList));  
 }  
}  

8.启动类添加mapper的路径

  
package com.example;  
  
import org.mybatis.spring.annotation.MapperScan;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
  
@SpringBootApplication  
@MapperScan("com.example.mapper")  
public class DemoApplication {  
  
 public static void main(String[] args) {  
 SpringApplication.run(DemoApplication.class, args);  
 }  
  
}  

9.启动并调用接口进行测试,至此mybatis-plus集合完成,更多的操作看官方文档就可以

picture.image

易错问题点:

1.在Spring2.x新版本中 要执行sql文件 还须配置spring.datasource.initialization-mode=always 表示始终执行初始化,否则你会发现脚本一直无法执行

picture.image

查看源码

picture.image

picture.image

就可以知道需要配置才能去执行脚本相关操作,所以配置上去初始化脚本就能正常的执行。

2.启动类没有加@MapperScan注解

后续会针对mybatis-plus源码进行解读,感兴趣的朋友可以关注我。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 NoSQL 的实践与探索
随着 NoSQL 的蓬勃发展越来越多的数据存储在了 NoSQL 系统中,并且 NoSQL 和 RDBMS 的界限越来越模糊,各种不同的专用 NoSQL 系统不停涌现,各具特色,形态不一。本次主要分享字节跳动内部和火山引擎 NoSQL 的实践,希望能够给大家一定的启发。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论