学无先后,达者为师

网站首页 编程语言 正文

SpringBoot整合Mybatis详解

作者:铸键为犁 更新时间: 2023-07-25 编程语言

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、创建项目,导入依赖,完善项目结构
  • 二、编码
    • 1.yml配置
    • 2.编写实体类
    • 3.编写mapper.xml和接口
    • 4.编写业务层
    • 5.编写控制层
    • 6.启动类加上包扫描注解
  • 三.测试
  • 总结


前言

SpringBoot支持对其它框架的快速扩展,本篇记录怎么使用SpringBoot整合Mybatis框架


一、创建项目,导入依赖,完善项目结构

使用IDEA创建SpringBoot项目上篇已经讲过,不再赘述,大家可以自行观看http://t.csdn.cn/1N423
直接从导入依赖开始

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-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.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

项目结构如下
在这里插入图片描述

二、编码

1.yml配置

#配置连接数据库
spring:
  datasource:
    username: 用户民
    password: 密码
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/book?serverTimezone=Asia/Shanghai&characterEncoding=utf8
    type: com.alibaba.druid.pool.DruidDataSource

#配置mybatis
mybatis:
  # 指定别名设置的包为所有pojo
  type-aliases-package: com.lzl.pojo
  configuration:
    #控制台输出
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #mapper.xml文件位置
  mapper-locations: classpath:mapper/*.xml

2.编写实体类

package com.lzl.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 19:10
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
    private Integer id;
    private String bookName;
    private String author;
    private Double price;
    private Integer typeId;
    private String description;
    private String path;
}

3.编写mapper.xml和接口

持久层接口

package com.lzl.mapper;

import com.lzl.pojo.Book;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 19:18
 */
@Repository
public interface BookMapper {
    List<Book> getAll();
}

映射文件

<?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.lzl.mapper.BookMapper">
    <resultMap id="bookMap" type="book">
        <id column="id" property="id"/>
        <result column="book_name" property="bookName"/>
        <result column="author" property="author"/>
        <result column="price" property="price"/>
        <result column="type_id" property="typeId"/>
        <result column="description" property="description"/>
        <result column="path" property="path"/>
    </resultMap>
    <sql id="selectSql">
        select id,book_name,author,price,description,path from book
    </sql>
    <select id="getAll" resultMap="bookMap">
        <include refid="selectSql"/>
    </select>


</mapper>

4.编写业务层

接口:

package com.lzl.service;

import com.lzl.pojo.Book;


import java.util.Map;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 19:19
 */

public interface BookService {
    Map<String,Object> findAll();
}

实现类:

package com.lzl.service.impl;

import com.lzl.mapper.BookMapper;
import com.lzl.pojo.Book;
import com.lzl.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 19:20
 */
@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookMapper mapper;


    @Override
    public Map<String, Object> findAll() {
        Map<String, Object> map = new HashMap<>();
        List<Book> list = mapper.getAll();
        if (list.size() != 0){
            map.put("data",list);
            map.put("code",200);
        }else{
            map.put("msg","没有数据!");
            map.put("code",200);
        }
        return map;
    }
}

5.编写控制层

package com.lzl.controller;


import com.lzl.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 19:20
 */
@RestController
@RequestMapping("/book")
public class BookController {
    @Autowired
    private BookService service;

    @RequestMapping("/getAll")
    public Map<String,Object> getAll(){
        return service.findAll();
    }
}

6.启动类加上包扫描注解

在这里插入图片描述

三.测试

启动项目,浏览器访问http://localhost:8080/book/getAll如下:
在这里插入图片描述

成功!


总结

本篇是对mybatis的整合,完成

原文链接:https://blog.csdn.net/l_zl2021/article/details/129371063

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新