spingboot整合mybatis-plus

文章讲述了作者在尝试整合SpringBoot3.x与Mybatis-Plus时遇到的问题,发现是由于版本不兼容导致接口访问404。作者详细列出了POM.xml和application.yml中的配置,以及实体类、Service、Controller和Mapper的实现方式。最后提到使用`@MapperScan`简化多个Dao接口的注册。
摘要由CSDN通过智能技术生成

spingboot整合mybatis-plus

情况说明:一个简单的spingboot整合mybatis-plusdemo耗时一天未完成,项目无报错,正常启动,但使用postman请求接口一直404,最终诊断错误原因为spingboot版本问题,创建项目时使用了spingboot 3 版本,切换为spingboot 2 版本解决问题。

本人目前未研究使用spingboot 3 ,所以没深究其错误原因,以后使用到时再进行补充。

spingboot整合mybatis-plus本身难度不高,现将所用大致配置列出:

pom文件依赖添加

    <dependencies>
        <!-- Spring Boot Web Starter -->
        <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.3.1</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Druid Spring Boot Starter -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.21</version>
        </dependency>

        <!--lombok用来简化实体类-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

application.yml配置文件

Druid的配置项根据情况增删

server:
  port: 8081  #设置请求端口
  servlet:
    encoding:
      charset: UTF-8
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jwt?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: root
    druid:
      initial-size: 5                                       # 初始化大小
      min-idle: 10                                          # 最小连接数
      max-active: 20                                        # 最大连接数
      max-wait: 60000                                       # 获取连接时的最大等待时间
      min-evictable-idle-time-millis: 300000                # 一个连接在池中最小生存的时间,单位是毫秒
      time-between-eviction-runs-millis: 60000              # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
      filters: stat             # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计   ,wall
      validation-query: SELECT 1         # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
      test-on-borrow: true         # 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
      test-on-return: true         # 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
      test-while-idle: true        # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
  level:
    com.example.mybatis_plus.sys.mapper: debug

实体类

@Data
@TableName("user")		//关联数据库表名
public class UserEntity {

    @TableId("_id")		//数据库主键注解
    private Long id;

    @TableField("login_name")		//属性名与数据库字段名不相符时注解申明
    private String loginName;

    private String password;

    @TableField("nick_name")
    private String nickName;
    
    @TableField(exist = false)		//数据库查询时忽略该属性
    private String sex;
}

业务层-Service

方法一:继承IService<>接口,其实现类则直接可使用this调用接口内方法,不用再注入mapper对象

public interface UserService extends IService<UserEntity> {

    List<User> queryAll();

}

方法二:直接申明接口

public interface UserService {

    List<User> queryAll();

}

实现类-Impl

方法一:继承ServiceImpl<M,T>类,实现相应业务接口,则直接可使用this调用接口内方法,不用再注入mapper对象

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {

    @Override
    public List<User> queryAll() {
       return this.list();
    }
}

方法二:实现相应业务接口,注入mapper对象,执行相应操作方法

@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> queryAll() {
        return userMapper.selectList(null);
    }
}

Dao层

mapper接口上可使用@Mapper注解进行spring的注册,spring将动态的生成Bean后注入到ServiceImpl

@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {

}

控制层-Controller

@RestController	
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;

    @GetMapping("/all")
    public List<User> queryAll(){
        return userService.queryAll();
    }

}

启动类

当一个项目中存在多个Dao层接口的时候,此时我们需要对每个接口类都写上@Mapper注解,非常的麻烦,此时可以使用@MapperScan注解来解决这个问题。让这个接口进行一次性的注入,不需要在写@Mapper注解,如:

@SpringBootApplication
@MapperScan("longsir.cn.mapper")
public class JwtDmoApplication {
    /**
     * Java程序的入口函数,用于启动Spring Boot应用程序。
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        SpringApplication.run(JwtDmoApplication.class, args);
    }

}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雅墨绘卿颜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值