Springboot+MybatisPlus

背景: 原Springboot项目没有接入数据库现需要接入。

step1.  pom.xml文件中加入依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>

<!-- MyBatis-Plus的启动器依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MySQL数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>

step2:application.properties配置文件中:

spring.datasource.url=jdbc:mysql://your_sql_ip/your_database_name?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mapper xml 如果不引用xml 也可以不配置这一行
mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml  
#数据表对应的实体类所在的包名称
mybatis-plus.type-aliases-package=com.cn.demo.pojo
#启动日志输出
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.org.springframework=DEBUG
logging.level.com.baomidou.mybatisplus=TRACE

step3:启动类加Mapper扫描范围

@SpringBootApplication
@MapperScan(basePackages = "com.cn.demo.mapper")

step4: pojo创建

@TableName("user")// 表名
@Data
public class User {
    @TableId(type = IdType.AUTO)
    private int id;
    private String name;
    
   
}

step5: Mapper接口创建

@Mapper
public interface UserMapper extends BaseMapper<User> {
   
}

step6: Service访问测试

@Autowired
UserMapper userMapper;


public String insertStatRecord(User user) {
   
    final int insert = userMapper.insert(user);
    System.out.println("insert:" + insert);
    return "成功";
}
 

QA:

如果启动项目的时候报错
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file ...
按接入顺序依次核对配置信息是否正确
其他无误的话大概率是版本冲突。

我用springboot 3.4.2 对应的mybatis为3.0.4, plus为3.5.7  这种是兼容的~

### Spring Boot 整合 MyBatis-Plus 示例 #### 项目创建与依赖配置 通过 Spring Initializr 创建一个基础的 Spring Boot 项目,并引入必要的依赖项,包括 `Spring Web`、`MyBatis-Plus` 和 `MySQL Driver`。以下是典型的 Maven 配置示例: ```xml <dependencies> <!-- Spring Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> ``` 上述配置展示了如何设置项目的初始环境[^2]。 --- #### 数据源配置 在 `application.yml` 或 `application.properties` 文件中完成数据源的相关配置。以下是一个基于 YAML 的配置实例: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 此部分定义了数据库连接参数以及日志输出方式[^1]。 --- #### 实体类映射 假设有一个名为 `User` 的表结构,则可以为其生成对应的实体类。如果使用 `mybatis-plus-generator` 工具,可以通过自动生成的方式简化开发流程[^3]。下面展示了一个手动编写的简单实体类示例: ```java package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("user") public class User { @TableField("id") private Long id; @TableField("name") private String name; @TableField("age") private Integer age; } ``` 该代码片段说明了如何利用注解实现字段到数据库列的映射关系。 --- #### Mapper 接口设计 为了使 DAO 层更加简洁高效,继承 `BaseMapper<T>` 即可获得 CRUD 功能支持。例如针对上面提到的 `User` 表,其对应接口如下所示: ```java package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.User; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 这里强调的是无需额外编写 SQL 查询语句即可满足大部分场景下的增删改查需求。 --- #### 常见问题解答 1. **无法加载 Mapper 接口** 如果遇到此类错误,请确认是否正确标注了 `@MapperScan` 注解于启动类之上或者单独给每个 Mapper 添加了 `@Mapper` 装饰符。 2. **分页插件未生效** 在全局配置文件里启用分页组件并注册拦截器之后仍然不起作用的话,可能是因为方法签名不符合要求所致。确保返回值类型为 `IPage<T>` 并传递合适的 Page 对象作为第一个参数。 3. **动态数据源切换失败** 当应用程序涉及多个数据库时需特别注意事务管理机制的设计合理性;另外还需验证上下文中是否存在有效的 DataSourceKey 提供者服务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值