MyBatis-Plus是一个 MyBati (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
本文教你如何根据官方文档进行引入包,与其如何查看文档和常见问题解决
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
2.引入依赖包,我们要选择使用的数据驱动,常用的mysql、oracle、h2等等,本文就用H2本地数据库来进行演示,接下来我们就看官网文档,按照文档来操作
https://www.h2database.com/html/cheatSheet.html
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
那你要用h2库,是不是要配置连接地址,账号、密码等等,那你就从官方文档里面找使用配置上相关内容
也可以从你引入的包去查看源码,看连接类需要什么配置。
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集合完成,更多的操作看官方文档就可以
易错问题点:
1.在Spring2.x新版本中 要执行sql文件 还须配置spring.datasource.initialization-mode=always 表示始终执行初始化,否则你会发现脚本一直无法执行
查看源码
就可以知道需要配置才能去执行脚本相关操作,所以配置上去初始化脚本就能正常的执行。
2.启动类没有加@MapperScan注解
后续会针对mybatis-plus源码进行解读,感兴趣的朋友可以关注我。