SpringBoot整合mybatis详解+易遇的坑

初学springboot,整合mybatis,总是会遇到许多奇奇怪怪的错,相比于SSM,springboot的错误更难定位。因此,作为刚学完springboot+mybatis整合的新手,顺便将我的过程整理一下在遇上无数坑并解决后,最终 = 这篇博文。接下来我将全程记录整合过程。

工具IDEA、联网、navicat(可有可无)、Postman(连接测试工具)

过程:

首先打开IDEA,创建一个springboot项目,勾选需要添加的依赖,见图,点击Finish,创建完成,可以再打开pom.xml文件检查一下,等待几秒等它导入。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二、在resource包下创建一个application.yaml文件用以配置,注意,坑1:如果application.yaml文件图标没有变成一片绿叶,说明还没有被识别,把后缀名改为yml,再改回来即可。然后在yaml文件中添加数据库连接相关参数即可
在这里插入图片描述
我的数据库表:
在这里插入图片描述

三、在java中创建相应的包:pojo(entity)、mapper、service、controller;并在pojo包中创建相应的类(与数据库表相对应,我这用了lombok插件),按上顺序开发有助于理解各层关系

pojo包User类:
在这里插入图片描述

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
    private Integer id;
    private String name;
    private Integer gender;
    private String phone;
}

mapper包UserMapper接口:
在这里插入图片描述

@Repository
@Mapper
public interface UserMapper {
    User getUserById(Integer id);
}

service包UserService类:
在这里插入图片描述

@Service
public class UserService {
    @Autowired
    UserMapper userMapper;
    public User getUserById(Integer id){
        return userMapper.getUserById(id);
    }
}

controller包UserController类:
在这里插入图片描述

@RestController
public class UserController {
    @Autowired
    UserService userService;
    @GetMapping("/getUserById/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        return userService.getUserById(id);
    }
}

四、接下来在resources包下创建一个mybatis包,专门放与mybatis相关的文件,在mybatis包下创建一个mapper包,用来放映射文件(坑2:映射文件放置位置不同需要不同的配置,如果映射文件和mapper文件在同一目录下,则不需要相关配置,反之则需要进行配置),同时在mybatis下创建一个mybatis-config包,用来配置mybatis(小知识:mybatis-config.xml文件中不用写任何配置,配置都写在application.yaml中)
在这里插入图片描述
mybatis-config.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

mapper包UserMapper类(注意:此映射类xml文件名需与待映射文件名相同):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.run.mapper.UserMapper">
    <select id="getUserById" resultType="User">
        select * from user where id = #{id};
    </select>
</mapper>

坑3:springboot中mapper文件需要被容器知道,因此需要手动在UserMapper.java文件中添加@Mapper注解,告诉springboot此处有一个映射文件;或者在主程序中添加上mapper扫描注解@MapperScan(“全类名”)

@Repository
@Mapper
public interface UserMapper {
    User getUserById(Integer id);
}

或者

@SpringBootApplication
@MapperScan("com.run.mapper")
public class SpringBootTest03Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootTest03Application.class, args);
    }
}

五、到这里就可以跑起来了

原数据库数据:
在这里插入图片描述
通过postman查询到的数据:
在这里插入图片描述

其实路上遇见的远不止这点坑,这里只是把常见的坑列出来了。springboot是一门新技术,也许还未足够完善,但是却是帮助了无数的开发者。编程的进步永远是简化开发,技术没有止境,加油,学习吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值