1、什么是spring boot?
Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot 都可以做,而且使用更加简单,功能更加丰富,性能更加稳定。
2、spring boot的优势
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
3、什么是mybatis?
MyBatis 是一个开源、轻量级的数据持久化框架,MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身
4、mybatis的优势
- 简单易学
- 灵活
- sql和代码分离,提高了可维护性
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组件维护
- 提供XML标签,支持编写动态sql
5、SpringBoot整合Mybatis
1、导入 MyBatis 所需要的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2、配置数据库连接信息
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/数据库名称?characterEncoding=utf-8&&severTimezone=utc
username: root
password:
mybatis:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.boot.pojo
3、测试数据库是否连接成功!
4、创建实体类,导入 Lombok!
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
5、创建mapper目录以及对应的 Mapper 接口
public interface GoodsMapper {
/**
* 查询全部商品信息
*/
List<Goods> findAll();
}
6、对应的Mapper映射文件
<?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.boot.mapper.GoodsMapper">
<!--查询全部商品信息-->
<select id="findAll" resultType="goods">
select * from goods
</select>
</mapper>
7、编写Controller 进行测试!
@RestController
@RequestMapping("/testGood")
public class GoodsController {
@Autowired
private GoodsService goodsService;
/*查询全部方法*/
@RequestMapping("/findAll")
public R findAll(){
List<Goods> list = goodsService.findAll();
return R.ok().data("list",list.toString());
}
}
6、使用的工具类
R工具类:
package com.boot.util;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
@Data
public class R {
//状态值
private Boolean success;
//状态吗
private Integer code;
//数据
private String message;
private Map<String, Object> data = new HashMap<String, Object>();
private R(){}
public static R ok(){
R r = new R();
r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
r.setCode(ResultCodeEnum.SUCCESS.getCode());
r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
return r;
}
public static R error(){
R r = new R();
r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.getSuccess());
r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
return r;
}
public static R setResult(ResultCodeEnum resultCodeEnum){
R r = new R();
r.setSuccess(resultCodeEnum.getSuccess());
r.setCode(resultCodeEnum.getCode());
r.setMessage(resultCodeEnum.getMessage());
return r;
}
public R success(Boolean success){
this.setSuccess(success);
return this;
}
public R message(String message){
this.setMessage(message);
return this;
}
public R code(Integer code){
this.setCode(code);
return this;
}
public R data(String key, Object value){
this.data.put(key, value);
return this;
}
public R data(Map<String, Object> map){
this.setData(map);
return this;
}
}
ResultCodeEnum:工具类
package com.boot.util;
import lombok.Getter;
@Getter
public enum ResultCodeEnum {
SUCCESS(true, 20000,"成功"),
UNKNOWN_REASON(false, 20001, "未知错误"),
BAD_SQL_GRAMMAR(false, 21001, "sql语法错误"),
JSON_PARSE_ERROR(false, 21002, "json解析异常"),
PARAM_ERROR(false, 21003, "参数不正确"),
FILE_UPLOAD_ERROR(false, 21004, "文件上传错误"),
EXCEL_DATA_IMPORT_ERROR(false, 21005, "Excel数据导入错误"),
USERLOGIN_INVALID_ERROR(false, 21007,"登录信息过期,请重新登录"),
USERUNLOGIN_ERROR(false, 21008,"用户未登录,请重新登录");
private Boolean success;
private Integer code;
private String message;
private ResultCodeEnum(Boolean success, Integer code, String message) {
this.success = success;
this.code = code;
this.message = message;
}
}