当前位置: 首页 > news >正文

创建一个springboot项目,mybatis连接嵌入式数据库H2,实现增删改查功能

@

目录
  • 目标
  • 创建一个spirngboot项目
    • 创建流程
    • 第一次运行项目,界面如下
  • mybatis连接数据库H2
    • 依赖:mybatis + h2
    • 配置文件
    • schema.sql
  • 实现对用户的增删改查
    • 创建entity
    • 创建mapper
    • 创建service
    • 创建controller
  • 搭配前端程序,修改controller
  • 总结

目标

  • 创建一个spirngboot项目。
  • 连接嵌入式数据库H2
  • 实现对用户的增删改查。

创建一个spirngboot项目

创建流程

  • 打开idea,选择File -> New -> Project,界面如下。

在这里插入图片描述

  • 选择Spring Boot 2.7.6,添加Spring Web,创建项目,界面如下。

在这里插入图片描述

第一次运行项目,界面如下

在这里插入图片描述

mybatis连接数据库H2

为了省去安装数据库的烦恼,这里采用使用嵌入式的数据库,进行数据保存,选择Spring支持的h2。下面是使用步骤。

依赖:mybatis + h2

<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>2.1.214</version>
</dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version>
</dependency>

配置文件

在resources目录下创建配置文件,文件名如下,并删除原有的配置文件。

application.yml

# 端口
server:port: 8090spring:datasource:url: jdbc:h2:file:D:/aaa/testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQLusername: sapassword:driver-class-name: org.h2.Driversql:init:mode: alwaysschema-locations: classpath:schema.sql# H2 控制台配置(开发环境启用)h2:console:enabled: truepath: /h2-consolemybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.xbdx.demo111.entity

schema.sql

在resources目录下创建schema.sql文件,项目启动时会自动检查运行。

schema.sql

CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT
);

实现对用户的增删改查

创建entity

创建一个和数据库对应起来的User实体类。

entity.User

public class User {private String name;private Integer age;private Integer id;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}
}

创建mapper

创建mapper层的接口与xml,实现增删改查的功能。

mapper.UserMapper

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface UserMapper {public void userCreate(User  user);@Select("select * from users")public List<User> userRead();public void userUpdate(User user);@Delete("delete from users where id = #{id}")public void userDelete(Integer id);}

mapper.UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xbdx.demo111.mapper.UserMapper"><!-- 新增用户 --><insert id="userCreate" useGeneratedKeys="true" keyProperty="id">insert into users(name,age) values(#{name},#{age})</insert><update id="userUpdate">update users<set><if test="name != null">name = #{name},</if><if test="age != null">age = #{age}</if></set>where id = #{id}</update>
</mapper>

创建service

创建service层的接口与实现类,实现增删改查的功能。

service.UserService

import java.util.List;public interface UserService {void userCreate(User user);List<User> userRead();void userUpdate(User user);void userDelete(Integer id);
}

impl.UserServiceImpl

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic void userCreate(User user) {userMapper.userCreate(user);}@Overridepublic List<User> userRead() {return userMapper.userRead();}@Overridepublic void userUpdate(User user) {userMapper.userUpdate(user);}@Overridepublic void userDelete(Integer id) {userMapper.userDelete(id);}
}

创建controller

创建controller层的类,实现增删改查的功能。

controller.UserController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/create")public void userCreate() {User user = new User();user.setName("zhangsan");user.setAge(19);userService.userCreate(user);System.out.println("用户创建成功");}@GetMapping("/read")public void userRead() {List<User> users = userService.userRead();System.out.println("用户查询成功");for (User user : users) {System.out.println(user.getName() + " " + user.getAge());}}@GetMapping("/update")public void userUpdate() {User user = new User();user.setId(1);user.setName("lisi");user.setAge(18);userService.userUpdate(user);System.out.println("用户更新成功");}@GetMapping("/delete")public void userDelete() {userService.userDelete(1);System.out.println("用户删除成功");}
}

到这里,程序已经写完,访问使用网页改变路由地址即可。下面为了方便,搭配前端程序,是一个vue3的项目,放在资源里面。

搭配前端程序,修改controller

UserController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/create")public void userCreate(@RequestBody User user) {userService.userCreate(user);System.out.println("用户创建成功");}@GetMapping("/read")public List<User> userRead() {List<User> users = userService.userRead();System.out.println("用户查询成功");return users;}@PutMapping("/update")public void userUpdate(@RequestBody User user) {userService.userUpdate(user);System.out.println("用户更新成功");}@DeleteMapping("/delete")public void userDelete(@RequestParam Integer id) {userService.userDelete(id);System.out.println("用户删除成功");}@GetMapping("/getOne")public User getOne(@RequestParam Integer id) {User user = userService.getById(id);System.out.println("单个用户查询成功");return user;}
}

前后端程序,放在资源里面,自行下载,可以及时的看到效果,增删改查与查看单个,前端截图如下。

在这里插入图片描述

前端程序,会在另一篇博文中具体说明,届时会将页面样式添加上,做成一个用户管理的界面。以及完善后端程序,采用mybatisPlus。

总结

本文使用idea创建了一个springboot项目。数据库是嵌入式数据库h2,使用mybatis连接数据库。文中详细给出了安装依赖、配置文件、schema.sql,以及controller、service、mapper的所有示例代码。已亲测可以调试。并且将前后端程序一起放在资源里,只需要安装jdk就可以运行项目,进行前后端联调。

http://www.hskmm.com/?act=detail&tid=27546

相关文章:

  • 基于众包的产品质量比较与推荐算法研究
  • 10/9
  • 2025.10.9
  • 线程池总结
  • 合并两个有序链表
  • 深入解析:一款相机是只有桶形畸变 和 枕形畸变的一种,还是两个都有?
  • 数据结构-链表
  • 重组抗体技术:从原理到应用,解锁高效可控的新一代抗体研发
  • P13690 [CEOI 2025] boardgames
  • CSS
  • 关于jinja2的ssti模版注入的学习+过滤
  • WPF Epplus export 10M+ items in excel with multiple sheets batch by batch
  • [EGOI 2023] Guessing Game
  • CF2152G Query Jungle
  • [ROI 2018] Addition without carry
  • [THUPC 2025 决赛] Im Here
  • 解码Linux基础命令
  • 基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化 - 实践
  • 由等概率(a,b)生成等概率(c,d)
  • AI/LLM应用安全与合规产品(AI安全网关|AI安全围栏|AI应用防火墙) 2025最新推荐
  • 10.8 CSP-S模拟27 改题记录
  • 《可复制的领导力》
  • 经营分析会 - 智慧园区
  • 自动评估问答模型的技术突破
  • Ivanti EPM移动版12.5.0.0身份验证绕过漏洞分析与利用
  • 运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
  • 深入解析:Java 将 PDF 转换为 PDF/A:数字文档归档的基石
  • 入门正当时!MQTT协议轻量简洁,但应用绝不简单
  • 英语阅读
  • CF1832D2 Red-Blue Operations (Hard Version) 模拟赛题目分析