SpringBoot整合Mybatis纯注解实现简单增删改查
一.环境搭建
1.创建项目
此处可使用idea自带的SpringBoot项目创建工具进行创建,选中自己所需模块即可
创建项目使用maven进行项目管理,其中pom.xml文件中会生成以下依赖(SpringBoot开启了所需功能的启动器,会自动将你所需模块可能用到的jar全部导入)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.配置数据源
在resources目录下创建application.yml配置文件,SpringBoot会自动识别并将其作为该项目的总配置文件
创建yml配置文件之后须在该文件中配置数据源,此处使用SpringBoot默认数据源,为hikari
注:springboot1.0时数据源默认使用的是tomcat,2.0以后换成了hikari
1.0时,只要导入jdbc、jpa或者mybatis三者依赖之一,默认就带上tomcat数据源
2.0以后只要导入jdbc、jpa或者mybatis三者依赖之一,默认就带上hikari数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/database_name?serverTimezone=GMT%2B8
username: root
password: 12345
楼主使用的Mysql版本是8.0.18,其中url需指定时区即serverTimezone=GMT%2B8指定东八区,驱动类的位置相较之前较早版本也发生了变化
二.写代码!
1.实体类
public class JavaBean {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
注:该类中的两个成员变量均与数据库所建表的列名保持一致
2.Dao层
@Repository
public interface DaoMapper {
@Select("select * from javabean")
List<JavaBean> SelectAll();
@Select("select * from javabean where id=#{id}")
JavaBean SelectOne(Integer id);
@Delete("delete from javabean where id=#{id}")
int DeleteOne(Integer id);
@Insert("insert into javabean (id,name) values(#{id},#{name})")
int InsertOne(JavaBean javaBean);
@Update("update javabean set name=#{name} where id=#{id}")
int UpdateOne(JavaBean javaBean);
}
加上@Repository注解,加上该注解的类作为Dao对象(此处为接口),同时需在SpringBoot启动类加上@MapperScan("Dao接口所处的全包名"),Mybatis将自动扫描这个包,找到被@Repository标记的接口,使用动态代理实现方法增强,并交由SpringBoot进行管理。经过这一系列操作,我们就可以将其注入了。
3.Controller
@Controller
@ResponseBody
public class JavaBeanController {
@Autowired
DaoMapper daoMapper;
@GetMapping("/SelectAll")
List<JavaBean> SelectAll(){
return daoMapper.SelectAll();
}
@GetMapping("/SelectOne/{id}")
JavaBean SelectOne(@PathVariable Integer id){
return daoMapper.SelectOne(id);
}
@DeleteMapping("/DeleteOne/{id}")
int DelectOne(@PathVariable Integer id){
return daoMapper.DeleteOne(id);
}
@PostMapping("/InsertOne")
int InsertOne(@RequestBody JavaBean javaBean){
return daoMapper.InsertOne(javaBean);
}
@PutMapping("/UpdateOne")
int UpdateOne(@RequestBody JavaBean javaBean){
return daoMapper.UpdateOne(javaBean);
}
}
API最好遵循RESTful API设计指南设计
GET(SELECT):从服务器取出资源(一项或多项)
POST(CREATE):在服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)
DELETE(DELETE):从服务器删除资源
三.调试API
此处使用Postman进行API调试
补充一下发送带请求体请求的方法
类型为json
编写需发送的json
四.总结
如有错误,还劳烦大佬指正,感激不尽
2020.1.31 深夜2:49