Springboot整合mybatis日记

本文详细介绍了如何在SpringBoot项目中整合Mybatis,并配置热部署。首先介绍了Mybatis作为半自动ORM框架的基本概念,然后展示了创建数据库连接和用户权限设置的过程。接着,创建SpringBoot项目并集成Mybatis,同时讲解了Spring Boot DevTools实现的热部署功能。最后,指导读者完成热部署配置,确保项目在代码修改后能够自动编译和更新。

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

整合mybatis

mybatis是一个半自动的ORM框架
请先安装好 数据库,再去玩持久层的框架
ORM介绍:对象关系映射(Object Relational Mapping,简称ORM),目的是想像操作对象一样操作数据库.因为数据库不是面向对象的,所以需要编程进行映射,像这种持久层框架还有以前很火的hibernate,是一个全自动的ORM框架,mybatis半自动,是首选的持久层框架

这里我创建了一个新的连接,跟数据库,记得把mysql服务打开下!我这里还用到了一个 可视化工具,没有的呢,我这里有一个好朋友有
navcat可视化工具
在这里插入图片描述
我这里选了 UTF8mb4,为什么选这个呢,因为 原先的 utf8只支持三个字节的,这个utf8mb4支持一些小表情还可以,比如这个表情😁
在这里插入图片描述
这里因为 用 root用户连接,可以看见所有的数据库
在这里插入图片描述
这里可以用到 mysql中的用户功能,让这个用户只能看见 test 这个数据库
在这里插入图片描述
如果想要外网能访问的话,就在主机那里写一个 %
在这里插入图片描述
在这里插入图片描述
填写完毕之后,Ctrl + s保存,在点击对象,就可以看见这个用户了
在这里插入图片描述
现在给这个这个用户 赋 数据库的权限,让这个用户只能干嘛,以前我不知道的时候,一直听什么删库跑路,现在我知道了,公司可没有那么傻,人家还会备份一份库,数据库是一个公司的核心,在实际开发中会创建不同的用户权限,比如只能查数据库,或者只能做增删改查
在这里插入图片描述
点击确定,就可以了,可以看见旁边的 SQL预览

GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Grant Option, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `test`.* TO `test`@`localhost`;

再去创建一个连接,
在这里插入图片描述
用户名换成刚才自己新创建的用户名,可以连接测试下
在这里插入图片描述
打开的时候报了个错,不用理他,他就是告送我们数据库里面还没有一张表,
在这里插入图片描述
这里你们可能疑问,怎么还有个数据库呢,information_schema

information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。就相当于你打开 IDEA 会默认跟你配置一个叫 .idea这个文件

准确解释

这里我创建了一张表,到创建表的时候呢,又有一个数据库设计规范,建议可以去看下 阿里巴巴数据设计规范
阿里巴巴数据库设计规范
在这里插入图片描述
在这里插入图片描述

/*
 Navicat Premium Data Transfer

 Source Server         : realproject
 Source Server Type    : MySQL
 Source Server Version : 50729
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50729
 File Encoding         : 65001

 Date: 25/05/2020 13:46:05
*/

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `id` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'id',
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '测试' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '测试');
INSERT INTO `test` VALUES ('2', '测试2');

这里再打开数据库就不会有报错了

集成mybatis

创建一个SpringBoot项目
在这里插入图片描述
如果下一步,失败的话,参照我这篇文章,如果过慢的话也可以参照下
Spring脚手架创建启动失败

按照maven
在这里插入图片描述
这个Spring Boot DevTools是一个热部署,什么叫热部署,就是当你修改了Java代码之后呢,我们以前就需要手动重启,像以前在 JavaWeB阶段玩Servlet的时候呢,改Java代码也是需要重启吧,对吧,在eclipse中呢他是默认重启加载的。
   但是IDEA不会,下面的Lombok呢,就是可以通过一些注解,就可以生成getter,setter,用过一下子,但是不喜欢,我就没用了,IDEA使用的话需要装一个插件,你使用了Lombok其他人也需要安装这个插件,我不大喜欢,添加这个依赖之后还需要去 IDEA 中去设置下

在这里插入图片描述
再去整合web层,在浏览器上面看见json形式的数据,还需要一个持久层的框架,
在这里插入图片描述
可以看见,什么都已经帮我们创建好了,这里的因为勾选了web所以会帮我们自动创建这两个文件夹static存放前端的 静态资源文件,比如images、js、css,templates放我们的模板,比如用的模板引擎,官方是默认推荐我们使用thymleaf这个模板引擎的,这里的.gitignore就是git软件要忽略的文件列表,环境配置文件是不允许,提交上去的,每个人的环境配置不一样,就比如每个电脑都不可能有D盘E盘我的电脑只有两个盘C跟D盘,这些是要忽略掉的,上面的.mvn都可以删除,是做一个maven版本控制,如果你不想做这个git版本控制,跟maven版本控制都是可以删除掉的,我下面就删除了,点.md是markdown语言,如果你想去写 markdown语言的话 推荐你下载一个typora,如第二张图,你看这个Help就知道是 一个相当于你写这个项目的一些帮助文档,给别人开源出去,以前在javaSE的时候呢可以用一个命令,使用javadoc生成自己写的方法的API 帮助文档
https://www.typora.io/

这里的 application.peoperties相当于你的配置信息,Springboot默认集成了一个hikari连接池,我的有些文章已经很多重复了,有些东西,就写的不详细,有些地方可能也写错了,请帮我纠正下,Springboot默认集成了很多比如tomcat,logback,搭环境吧,不然写多了,我朋友懒得看,我朋友要求写一篇SpringBoot整合的
在这里插入图片描述
在这里插入图片描述

配置热部署

步骤一

搜索关键字Compiler,代表编译器的意思嘛,
在这里插入图片描述
automatically自动,项目自动编译,打上勾
在这里插入图片描述

步骤二

按住Ctrl + Shift + ALt + /
在这里插入图片描述
一个是 自动编译,打上 ,一个你不写 java代码之后 热加载时间,他的原理是一个两个ClassLoader一个监听静态资源的变化,一个是动态资源的变化,这里只是简单描述一下
在这里插入图片描述
如果像什么QQ快捷键冲突了,按两下Shift,或者 直接点击放大镜
在这里插入图片描述
点一下 Actions下面的代表行动(动作的)意思,不要点错了,Actions下面的点击照样嫩能进上面的那个步骤一的界面,如果你是第一次就得慢慢找这个compiler.automake.allow.when.app.running,打上,如果都配上了还不行自己重新加载,重启IDEA
在这里插入图片描述
**这里注意,添加了 mybatis 依赖启动器,一定要 配置数据库连接信息,如果你不配就报错,像下图一样
这里解决方法有很多种,我直接把注释掉,演示,他这里说

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

你配置上这个依赖后,他会默认装配
在这里插入图片描述
像这种搭建,一步步来,最安全,如果熟连了的话,连看都不带看的,随便玩,初学的话,还是一步步来,现在把这个数据连接信息,放开,但是没写什么持久层接口,让他摆在那里
在这里插入图片描述
写一个 Controller测试

@Controller 
public class TestController {

  @RequestMapping("/test")
  @ResponseBody
  public String test1(){
    return "测试";
  }
}

在这里插入图片描述
看到了就说明成功了,再去写实体类
在这里插入图片描述

 private String id;

    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
      return "Test{" +
        "id='" + id + '\'' +
        ", name='" + name + '\'' +
        '}';
    }

在这里插入图片描述
再去写mapper持久层

public interface TestMapper {
    public List<Test> list();
}

在这里插入图片描述
有了这个之后就可以去写,映射器,xml

<?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="club.adger.springbootdemo2.mapper.TestMapper">
    <select id="list" resultType="club.adger.springbootdemo2.domain.Test">
        select * from test
    </select>
</mapper>

写对了,这个插件就会提示你
在这里插入图片描述
再去写服务层

public interface TestService {
  public List<Test> list();
}

服务层实现

@Service
public class TestServiceImpl implements TestService {

  @Autowired
  private TestMapper testMapper;

  @Override
  public List<Test> list() {
    return testMapper.list();
  }
}

配置扫描
在这里插入图片描述
配置@MapperScan(“mapper的路径”),这样就不用每个Mapper类,加上@Mapper注解了,这个注解是用户扫描mapper接口的也就是mapper(Dao)类,缺少这扫描 xml和mapper的都会报错在这里插入图片描述
新增一个测试地址
在这里插入图片描述

@Controller
public class TestController {
  @Autowired
  private TestService testService;

  @RequestMapping("/test")
  @ResponseBody
  public String test1(){
    return "测试";
  }

  @RequestMapping("/testAll")
  @ResponseBody
  public List<Test> test2(){
    return testService.list() ;
  }
}

就能清楚的看到,这里整合就完毕了,这里我装上了,一个json插件,在Chrome上,名字叫,json view
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值