Springboot整合Mybatis
November 02, 2020
4812
1.准备工作
在开始本教程之前,请确保已经熟悉一下几点。
- Spring Boot 基本语法,至少要懂得Controller、RestController、Autowired等这些基本注释。
- SQL基本语句,至少要能连接上数据库进行操作。
- 开发工具 Interllij idea的基本操作。
- mybatis基本语法,至少要namespace、resultMap等
程序目录结构:
2.程序实现过程
2.1依赖管理
引入以下这些:当添加完依赖以后,右键Maven –》Reimport下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<!-- SpringBoot的Mybatis启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--数据库驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombox依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>application.yml配置
##2.3实现代码1
2
3
4
5
6
7
8
9spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://193.112.177.168:3306/end?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: silin
password: tRdJjpwCi2cejKk2
mybatis:
mapper-locations: classpath:mapping/UserMapper.xml
话不多说,看代码。
###User.java文件可能小伙伴们这时候,不太明白1
2
3
4
5
6
7
8
9
10
11@Data
public class User {
private int id;
private String userName;
private String passWord;
private String realName;
private String phone;
private Integer age;
@JsonIgnore
private Date createTime;
}@Date,这就是Pom.xml添加的lombox依赖,而lombox的背景介绍大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。而@Data注解在类上,会为类的所有属性自动生成setter/gette、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。同时在idea开发工具也需要安装lombox插件,这种感兴趣的小伙伴可以了解一下。
###UserMapper.java1
2
3
4
5
6
7
8
9
10
11@Repository
//@Mapper
public interface UserMapper {
/**
* 读取用户名
* @param username
* */
User findByName(String username);
}
###UserMapper.xml
在resresources文件下新建一个mapping文件,在mapping下新建Usermapper.xml文件
1 | |
- 检查
xml文件的namespace是否和UserMapper.java文件的package名称一一对应 - 检查函数名称能否对应上
UserService .java
1
2
3
4
5
6public interface UserService {
/*
* 读取用户名*/
User findByName(String username);
}UserServiceImpl.java
这里我就不写controll层了,我直接写测试类1
2
3
4
5
6
7
8
9
10
11@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findByName(String username) {
return userMapper.findByName(username);
}
}UserServiceImplTest.java
执行结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceImplTest {
@Autowired
private UserService userService;
@Test
public void findByName() {
User user = userService.findByName("admin");
Assert.assertEquals(1,user.getId());
}
}
3.报错情况
mybatis配置时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
如果出现:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误
按以下步骤一一执行:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
4:去掉xml文件中的中文注释
5:随意在xml文件中加一个空格或者空行然后保存
一般来说到此就可以排除错误了
同时有可能是在进行application.yml配置mybatis的时候,没有顶左边栏也会报错。
1 | |
致谢
感谢您到来,如对您有帮助,请给小编一点温暖~~
- 本文作者:silin Zreo
- 本文链接:http://blog.ggcmll.xyz/2020/11/02/Springboot%E6%95%B4%E5%90%88Mybatis/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!
查看评论

