mybatis找不到mapper_Springboot整合Mybatis

本文介绍了Springboot整合Mybatis时的步骤和可能遇到的问题,包括资源复制、pom.xml配置、pojo创建、dao与mapper的设置、application.properties配置、以及一对一和一对多映射的处理。在配置过程中,特别提到了数据库驱动版本问题和mapper文件的路径声明,同时给出了项目的基本架构和文件组织方式。
摘要由CSDN通过智能技术生成

前言

0d32fa2e7e308eac8d6b989d3a9e456c.png

在之前介绍过快速搭建一个Springboot程序,那么这篇就记录下用Springboot整合mybatis的一些小坑坎。

  1. 在resources下的sql脚本复制。在navicat等sql执行(先创建表)
  2. pom.xml加入编译配置(默认只编译resources的xml文件,不配置无法编译dao里的xml,这点和eclipse系列不太一样)
  3. src创建对应文件夹。在application.properties中声明dao所在的包和mybatis映射pojo引用的包
  4. 基于xml/注解两种方式实现mbatis的增删改查。dao的interface要加上@Mapper,注入的话加上@Autuwired,如果基于xml的注意格式关联;
  5. 对于大部分和普通的都是没有关联的映射,那么pojo对象直接对应数据库的各个字段即可。但是如果遇到一对一,或者一对多的映射,大致的处理方式有两种
  6. 1.联表查询,把所有字段都查询出来,然后在自定义的Map中配置各个对象属性。
  7. 嵌套查询,先查询1查第一个大对象,在大对象配置到pojo对象的时候再调用查询2(带上查询1查到的参数)
  8. 对于一对一映射和一对多映射。最大的区别就是配置名称了。对于一对一的pojo对象
  9. 而一对多
  10. 总的来说,Springboot的主要配置只有两个地方——pom.xml和application.properties(有的是yml).pom.xml主要配置为jar包的管理和编译的一些配置。而application中主要是关于一些属性管理的配置。类似数据库或者一些量数值,在我整合的时候遇到了一下几个坎:
  11. 其中刚开始一直很坑的地方就是properties的配置问题。主要的问题就是数据库版本问题。我刚开始的配置是8.0.11版本的jar包。我的数据库也是8版本的数据库,但是更改驱动这些改了这个错就出现那个错。后来实在烦就把我的8版本的数据库当成5版本的用,把项目中所有的有关数据库的配置改成5版本的。但是注意的是(在配置数据库不要加到6版本以上的后缀,那么这个版本的driver会识别不了对应参数也会报错。)
9e29856684358be3cf62435616a7b2ad.png

在这里插入图片描述

  • 如果mapper和mapper.xml在一个文件中。(类似myeclipse的ssm)要在pom.xml中声明解析的xml的路径。或者你可以在resource创建一个mapper文件夹写xml和dao进行映射。
3477ba0b41ea52eeca213f25282e601d.png

在这里插入图片描述

  • 在搭建完一个基本的Springboot项目中,首先要加入mybatis和mysql的依赖。我的maven为:
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASEcom mybatis 0.0.1-SNAPSHOTmybatisDemo project for Spring Boot1.8org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1mysql mysql-connector-java runtimeorg.springframework.boot spring-boot-starter-test testsrc/main/resourcessrc/main/java**/*.xmltrueorg.springframework.boot spring-boot-maven-plugin 

项目架构为:创建对应的文件夹和文件

51bb974fc8d9f2c1dc28c91f28433b6a.png

在这里插入图片描述

pojo

创建dog和user类(配合自己数据库的都行)

package com.mybatis.pojo;public class dog { private String dogname; private String dogtype; private user master; public String getDogname() { return dogname; } public void setDogname(String dogname) { this.dogname = dogname; } public String getDogtype() { return dogtype; } public void setDogtype(String dogtype) { this.dogtype = dogtype; } public user getMaster() { return master; } public void setMaster(user master) { this.master = master; }}package com.mybatis.pojo;import java.util.List;public class user { private String username; private String password; private List dogs; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List getDogs() { return dogs; } public void setDogs(List dogs) { this.dogs = dogs; }}

dao、mapper(mybatis)

两个mapper:规则和ssm的传统项目差不多

  • dogMapper:
package com.mybatis.dao;import com.mybatis.pojo.dog;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import java.util.List;@Mapperpublic interface dogMapper { @Select("select * from dog")//不做配置情况找不到master,只能找数据库对应的字段 Listgetalldog(); //如果两个以上参数需要加param @Select("select * from dog where dogname=#{name} and dogtype=#{type}") Listgetdogbynametype(@Param("name")String dogname,@Param("type")String dogtype); List getdogbyType(String type);}
  • dogMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?> select a.dogname,a.dogtype ,b.username,b.password from dog a,user b where a.master_name=b.username and a.dogtype=#{type} 

userMapper.java

package com.mybatis.dao;import com.mybatis.pojo.user;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;import java.util.List;@Mapperpublic interface userMapper { @Select("select * from user") List getalluser(); List getalluserwithdog();}

userMapper.xml

<?xml version="1.0" encoding="UTF-8" ?> select * from user  select * from dog where master_name=#{username} 

controller

controller:(restcontroller就可以省掉@Responsebody注解)

  • dogController
package com.mybatis.controller;import com.mybatis.dao.dogMapper;import com.mybatis.dao.userMapper;import com.mybatis.pojo.dog;import com.mybatis.pojo.user;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestControllerpublic class DogController { @Autowired(required = false) private dogMapper dogMapper; @GetMapping("getalldog") public List getalldog() { return dogMapper.getalldog(); } @GetMapping("getdogbymaster")//不加参数默认为bigsai public List getalldog(@RequestParam(value = "type
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值