Spring Boot 整合mybatis实现对 MySQL 数据库的增删改查操作
创建一个新工程,添加如下依赖:
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
数据库表:
createtableuser(
idint(8) PRIMARYKEYAUTO_INCREMENT,
ageint(3)NOTNULL,
usercodechar(10)NOTNULL,
passwordchar(10)NOTNULL
);
根据你创建的实体类和数据库的表字段编写对应的mapper.xml文件,如下:
id, age, password, usercode
select
from user
where id = #
delete from user
where id = #
SELECT LAST_INSERT_ID()
insert into user (age, password, usercode
)
values (#, #, #
)
update user
set age = #,
password = #,
usercode = #
where id = #
启动类里添加扫描与 mapper 文件相映射的接口类包配置的注解,
//mapper 接口类扫描包配置
@MapperScan("com.spring.springboot.dao")
application.properties 文件里对MySQL数据库连接和 Mybatis 进行配置,如下:
## 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
## Mybatis 配置
## 实体包路径
mybatis.typeAliasesPackage=org.spring.springboot.entity
## 自动扫描 mapper 文件夹下的所有 xml文件
mybatis.mapperLocations=classpath:mapper/*.xml
在 dao 层编写与 xml 文件相对应的接口, 如下:
@Repository
publicinterfaceUserMapper{
intinsert(User record);
UserselectByPrimaryKey(Integer id);
intupdateByPrimaryKey(User record);
intupdateByPrimaryKeySelective(User record);
}
在 service 层编写接口,UserService.java 代码和 dao层接口一致,然后创建一个 service 接口实现类 UserServiceImpl.java,实现重写接口的方法,如下:
@Autowired
UserMapper userMapper;
@Override
publicintinsert(User record){
returnuserMapper.insert(record);
}
@Override
publicintdeleteByPrimaryKey(Integer id){
returnuserMapper.deleteByPrimaryKey(id);
}
@Override
publicUserselectByPrimaryKey(Integer id){
returnuserMapper.selectByPrimaryKey(id);
}
@Override
publicintupdateByPrimaryKey(User record){
returnuserMapper.updateByPrimaryKey(record);
}
控制层代码:
@RestController
publicclassUserControler{
@Autowired
UserService userService;
@PostMapping("/save")
publicint insert(@RequestBodyUser user) {
returnuserService.insert(user);
}
@GetMapping("/findById/")
publicUser findById(@PathVariableint id) {
returnuserService.selectByPrimaryKey(id);
}
@PostMapping("/update")
publicint update(@RequestBodyUser user) {
returnuserService.updateByPrimaryKey(user);
}
@GetMapping("/deleteById/")
publicint delete(@PathVariableint id) {
returnuserService.deleteByPrimaryKey(id);
}
}
运行项目,打开 postman 插件进行测试
插入数据:
查找数据:
修改数据:
删除数据:
每次都要写 Mybatis 的 xml 文件感觉很烦,这里我用的是网上找的插件 自动生成 Mybatis配置文件。需要插件的可以网上下载或者私我给你发。
运行文件填写相关的配置,文件路径,就能自动给你生成实体类,xml文件,还有 xml 文件对应的 mapper 类。
学习的过程中出现的错误:
Consider defining a bean oftype'com.spring.springboot.dao.UserMapper'inyour configuration.
我忘了在启动类里添加注解 @MapperScan("com.spring.springboot.dao") 所以他扫描不到 这个 bean。类似这样的报错都是没有对声明 bean 。相关的注解 @Service,@Repository,@Component,@Controller
小白的成长记录
领取专属 10元无门槛券
私享最新 技术干货