SpringBoot整合Mybatis
一.准备工作
创建SpringBoot项目
这篇文章中有SpringBoot项目的创建:启动SpringBoot《从零开始的Springboot》
添加相关依赖
<dependencies>
<!--引入springboot的web支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
全局配置文件
#指定一下 端口号 springboot
server:
port: 1111
#配置一下数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/t149?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
hikari:
username: root
password: root
#扫描mapper和给实体类驼峰
mybatis:
mapper-locations: classpath:/com/liu/mapper/*.xml
type-aliases-package: com.liu.entity
configuration: #输出日志文件sql语句日志文件
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
创建数据表
CREATE TABLE `goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品名称',
`price` double(10, 2) NOT NULL COMMENT '商品价格',
`num` int(255) NOT NULL COMMENT '商品数量',
`typeId` int(255) NOT NULL COMMENT '商品类型',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品介绍',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
CREATE TABLE `type` (
`id` int(11) NOT NULL,
`typeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
二.增删改查
创建实体类
@Data
public class Goods {
private int id;
private String name;
private double price;
private int num;
private int typeId;
private String remark;
private Type type;
}
这里的type字段后期写mapper时双表联查
@Data
public class Type {
private int id;
private String typeName;
}
统一返回类
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
put("msg", "success");
}
public static R error() {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
}
public static R error(String msg) {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
创建mapper接口
public interface GoodsMapper {
/***
* 查询全部
* 加id -修改根据id查询
*/
List<Goods> findAll(@Param("id")Integer id);
/***
* 删除
*/
Integer delete(@Param("id")Integer id);
/***
* 增加
*/
Integer insert(Goods goods);
}
servie业务层
@Service
public class GoodsServiceImpl implements GoodsService {
@Autowired
private GoodsMapper gm;
@Override
public List<Goods> findAll() {
return gm.findAll(null);
}
@Override
public Integer delete(Integer id) {
return gm.delete(id);
}
@Override
public Integer insert(Goods goods) {
return gm.insert(goods);
}
}
Controller控制层
@RequestMapping("/goods")
@RestController
public class GoodsController {
@Autowired
private GoodsServiceImpl gs;
@RequestMapping("/findAll")
public R list(){
return R.ok().data("list",gs.findAll());
}
@PostMapping("/insert")
public R add( Goods goods){
gs.insert(goods);
return R.ok();
}
@DeleteMapping("/{id}")
public R remove(@PathVariable Integer id){
gs.delete(id);
return R.ok();
}
}
三.测试
打开浏览器在地址栏输入:localhost:1111/goods/findAll 如下图:
![在这里插入图片描述
测试成功 !!
总结:
1.引入依赖
2.配置数据源
3.划分三层架构
4.编写controller层
5.运行