SpringBoot整合mybatis

本文介绍了如何将Spring Boot与MyBatis进行整合。首先,概述了Spring Boot的优势,如简化项目配置和内置容器。接着,解释了MyBatis是一个轻量级的数据持久化框架,简化了JDBC操作。然后,详细步骤展示了整合过程,包括添加依赖、配置数据库、创建实体类、定义Mapper接口和映射文件,最后通过编写Controller进行测试。文中还提及了用于返回结果的R工具类和ResultCodeEnum工具类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值