Spring Boot简易增删改查(CRUD)案例

项目架构

本项目为Spring Boot入门——增删改查案例。
前端采用html + thymeleaf模板代替jsp
项目架构如下:

.
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.example
│   │   │       └── crud                          --业务功能模块 即 CRUD
│   │   │           ├── controller                --Controller层
│   │   │           │    └── UserControl           
│   │   │           ├── dao                       --Dao层
│   │   │           │    └── UserDao              --Dao层接口         
│   │   │           ├── pojo                      --数据模型
│   │   │           │    └── User                 --请求体
│   │   │           ├── service                   --Service层
│   │   │           │    ├── impl                 --Service层接口的实现
│   │   │           │    │    └── UserServiceImpl 
│   │   │           │    └── UserService          --Service层接口
│   │   │           └── Application.java          --启动类
│   │   └── resources
│   │       ├── static                            --静态资源
│   │       ├── template                          --模板
│   │              ├── add.html                   --增加用户页面
│   │              ├── index.html                 --主页面
│   │              └── modify.html                --修改用户页面
└── pom.xml                                       --项目依赖

数据库

MySQL:v8.0.29
Navicat Premium 15
新建连接:crud
新建数据库:springboot_crud
:user
包含三个字段:id,username,password

user表如下:

idusernamepassword
1Lebron1111
2Durant2222
3Curry3333
4Bryant4444
5Harden5555

建表SQL语句:

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

POJO

pojo下包含实体类User
实体类有三个私有成员变量:idusernamepassword
这三个属性分别与数据库springboot_crud中的表user相对应。
实体类User包含带参构造方法、无参构造方法、三个属性对应的getset方法,另外还包含一个重写的toString方法。

实体类User.java

package com.example.crud.pojo;

public class User {
    private Integer id;
    private String username;
    private String password;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(Integer id,String username,String password) {
        this.id=id;
        this.username=username;
        this.password=password;
    }
    public User() {

    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
    
}

Dao

dao下包含接口UserDao
注解@Mapper用于修饰接口UserDao
注解@Insert、@Delete、@Update、@Select用于修饰接口内的方法(增删改查)。

UserDao.java

package com.example.crud.mapper;

import com.example.crud.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
	/**
     * 查询全部数据
     */
    @Select("select * from user")
    public List<User> findAll();
    
    **
     * 新增数据
     */
    @Insert("insert into user (username, password) values (#{username}, #{password})")
    public int save(User user);
    
	/**
     * 删除数据
     */
	@Delete("delete from user where id=#{id}")
	public int delete(int id);

	/**
     * 根据ID查找用户
     */
    @Select("select * from user where id=#{id}")
    public User get(int id);
    
    /**
     * 根据ID更新用户数据
     */
     @Update("update user set username=#{username},password=#{password} where id=#{id}")
     public int updateById(User user);
     
}

Service

service下包含包impl和Service层的接口UserService
其中,包impl包含Service层接口的实现类UserServiceImpl
Service层既需要调用Dao层接口,又需要提供接口给Controller层的类进行调用。

接口UserService.java

package com.example.crud.service;

import com.example.crud.pojo.User;

import java.util.List;

public interface UserService {
	/**
     * 查询全部数据
     */
     public List<User> findAll();

	/**
     * 新增数据
     */
	public int save(User user);
	
	/**
     * 删除数据
     */
    public int delete(int id);

    /**
     * 根据ID查找
     */
    public User get(int id);

    /**
     * 更新数据
     */
    public int updateById(User user);
    
}

接口实现类UserServiceImpl.java

package com.example.crud.service.impl;

import com.example.crud.mapper.UserMapper;
import com.example.crud.pojo.User;
import com.example.crud.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
	@Autowired
	private UserDao userDao;
	
	@Override
	public List<User> findAll() {
		return userDao.findAll();
	}
	
	@Override
	public int save(User user) {
		return userDao.save(user);
	}

	@Override
	public int delete(int id) {
		return userDao.delete(id);
	}

	@Override
	public User get(int id) {
		return userDao.get(id);
	}

	@Override
	public int updateById(User user) {
		return userDao.updateById(user);
	}
	
}

Controller

controller包含类UserControl
注解@Controller用于修饰类UserControl
注解@Autowired表示自动注入Service层提供的接口,供Controller层使用。

UserControl.java

package com.example.crud.controller;

import com.example.crud.pojo.User;
import com.example.crud.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

@Controller
public class UserControl {
	
	@Autowired
	private UserService userservice;
	
	/**
	 * 查询所有用户数据
	 */
	@GetMapping("/index.html")
	public String userList(Map<String, List> result) {
		List<User> users = userService.findAll();
		result.put("users", users);
		return "index";
	}

	/**
     * 新增数据
     */
	@PostMapping("/add")
	public String save(User user) {
		userService.save(user);
		return "redirect:/index.html";
	}
	
	/**
     * 删除数据
     */
	@RequestMapping("/delete/{id}")
	public String delete(@PathVariable int id, HttpServletResponse servletResponse) throws IOExceptioon {
		userService.delete(id);
		System.out.println("----delete方法执行----");
		return "redirect:/index.html";
	}

	/**
	 * 根据id修改用户数据
	 */
	 @GetMapping("/updatePage/{id}")
	 public String updatePage(Model model, @PathVariable int id) {
	 	User users = userService.get(id);
	 	model.addAttribute("users", users);
	 	return "modify";
	 }
	
	@PutMapping("/update")
	public String updateUser(Model model, User user, HttpServletRequest request) {
		String id = request.getParameter("id");
		User userById = userService.get(Integer.parseInt(id));
		userService.updataById(user);
		System.out.println(user);
		return "redirect:/index.html";
	}
	
}

前端页面

resources下的包templates下有三个html文件。
⭐删除按钮添加了onclick="return confirm('确定删除?')"防止误操作。

主页面index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户信息主页面</title>
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>

<style>

    a{
        color: #ffffff;
    }
    h1{
        /*文字对齐*/
        text-align: center;
    }
    button{
        height: 50px;
        width: 50px;
        background-color: cornflowerblue;
    }
    .parent{
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .btn{
        width: auto;
    }

</style>

<body>
    <h1>Spring Boot增删改查</h1>
    <!--table-striped:斑马线格式,table-bordered:带边框,table-hover:鼠标悬停高亮-->
    <table class="table table-striped table-bordered table-hover text-center">
        <thead>
            <tr style="text-align:center">
                <!--th标签定义html表格中的表头单元格-->
                <th style="text-align:center">编号</th>
                <th style="text-align:center">用户名</th>
                <th style="text-align:center">密码</th>
                <th style="text-align:center">操作</th>
            </tr>
        </thead>
        <!--tr标签定义html表格中的所有行-->
        <!--遍历集合,如果被遍历的变量user为null或者不存在,则不会进行遍历,也不会报错-->
        <tr th:each="user:${users}">
            <!--td标签定义html表格中的标准单元格-->
            <td th:text="${user.id}"></td>
            <td th:text="${user.username}"></td>
            <td th:text="${user.password}"></td>
            <td>
                <!--a标签用来定义超链接 href表示超链接-->
                <a class="btn btn-primary" th:href="@{'/updatePage/'+${user.id}}">更改</a>
                <a class="btn btn-danger" th:href="@{'/delete/'+${user.id}}" onclick="return confirm('确定删除?')">删除</a>
            </td>
        </tr>
    </table>

    <div class="parent">
        <button type="button" class="btn btn-block"><a href="/add.html">添加用户</a></button>
    </div>

</body>

</html>

添加用户页面add.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>添加用户页面</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<sty>

<body>
	<div style="width:600px;height:100%;margin-left:350px;margin-top: 180px;">
	    <form action="/add" method="post">
	        <!--form-control给input添加这个class后就会使用bootstrap自带的input框-->
	        用户名:<input class="form-control" type="text" th:value="${username}" name="username"><br>
	        <!--注意参数的拼接-->
	        密 码:<input class="form-control" type="text" th:value="${password}" name="password"><br>
	        <button class="btn btn-primary btn-lg btn-block">保存</button>
	    </form>
	</div>
</body>
</html>

更改用户信息界面modify.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>更改用户信息界面</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<div style="width:600px;height:100%;margin-left:350px;margin-top: 180px;">
    <form action="/update" method="post">
        <!-- rest风格中的更新是put请求,所以这块先使用post请求,然后隐藏起来改为put请求-->
        <input name="_method" type="hidden" value="put">
        ID:<input class="form-control"  type="text" th:value="${user.id}" name="id"><br>
        用户名:<input class="form-control" type="text" th:value="${user.username}" name="username"><br>
        密 码:<input class="form-control" type="text" th:value="${user.password}" name="password"><br>
        <button class="btn btn-primary btn-lg btn-block" type="submit">提交</button>
    </form>
</div>

</body>
</html>

配置文件

application.yml

spring:
  web:
    resources:
      static-locations: classpath:/static/,classpath:/templates/
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/springboot_crud?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  mvc:
    hiddenmethod:
      filter:
        enabled: true
  devtools:
    restart:
      enabled: true # 设置开启热部署
  freemarker:
    cache: false # 页面不加载缓存,修改即使生效
mybatis:
  configuration:
    map-underscore-to-camel-case: true # 下划线驼峰设置
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   # 打印SQL语句

运行

在chrome浏览器中输入http://localhost:8080/index.html,即可进入用户信息主页面。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Eclipse是一种集成开发环境(IDE),可用于开发各种Java应用程序。Spring Boot是一个用于开发独立的、基于Spring的应用程序的框架。MyBatis是一个持久层框架,用于与数据库交互。下面我将简单介绍如何在Eclipse中使用Spring Boot和MyBatis进行增删操作。 首先,你需要在Eclipse中创建一个Spring Boot项目。可以使用Spring Initializr(一个Spring Boot项目初始化工具)或手动创建项目。其中,Spring Boot会自动处理很多繁琐的配置,让开发更加简单。 一旦创建项目,你需要引入MyBatis的依赖。可以在项目的pom.xml文件中添加相应的依赖,然后使用Maven或Gradle进行构建。 接下来,你需要在项目中定义实体类(对应数据库表),并在配置文件中设置数据库连接信息。在配置文件中,需要指定数据库的驱动程序、URL、用户名和密码等。Spring Boot会根据这些配置创建数据库连接池,方便你与数据库进行交互。 然后,你需要创建Mapper接口,用于定义数据库操作的方法。可以使用注解或XML文件进行映射。在Mapper接口中,可以定义增删等操作对应的方法。 最后,你需要在Service或Controller层中调用Mapper接口的方法来进行数据库操作。可以通过注入Mapper接口的实例,然后调用相应的方法即可实现对数据库的增删操作。 总结起来,使用Eclipse开发Spring Boot项目,可以结合MyBatis进行数据库操作。你需要创建Spring Boot项目、引入MyBatis依赖、定义实体类和Mapper接口、设置数据库连接信息,然后在Service或Controller层中调用Mapper接口的方法进行数据库操作。这样就可以实现简单的增删功能了。 ### 回答2: Eclipse是一种集成开发环境(IDE),用于开发Java应用程序。Spring Boot是一个用于简化Spring应用程序开发的框架,大大减少了繁琐的配置工作。MyBatis是一种与数据库交互的持久化框架,通过SQL语句映射Java对象,并且自动处理结果集与对象的映射。 在Eclipse中使用Spring Boot和MyBatis进行增删操作可以按照以下步骤进行: 1. 创建一个Spring Boot项目。在Eclipse的菜单中选择File -> New -> Spring Starter Project,填写相关信息,选择适合的依赖包(如Spring Web、MyBatis等)并点击Finish。 2. 创建数据库表。通过数据库管理工具(如MySQL Workbench)创建适当的表结构。 3. 创建实体类。根据数据库表的结构,创建对应的Java类,并使用注解标记类名、属性和与数据库表字段的映射关系。如: ```java @Entity @Table(name = "user") // 对应数据库表名 public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") // 对应数据库表字段名 private String name; // 省略getter和setter方法 } ``` 4. 创建Mapper接口。创建一个用于执行数据库操作的Mapper接口,并使用注解标记方法名、参数和SQL语句的映射关系。如: ```java @Mapper public interface UserMapper { @Insert("INSERT INTO user(name) VALUES(#{name})") int insert(User user); @Update("UPDATE user SET name = #{name} WHERE id = #{id}") int update(User user); @Delete("DELETE FROM user WHERE id = #{id}") int delete(Long id); @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); } ``` 5. 创建Mapper.xml文件。在resources目录下创建与Mapper接口相同包路径的文件夹,并创建与Mapper接口同名的XML文件,编写SQL语句。如: ```xml <?xml version="1.0" encoding="UTF-8" ?> <mapper namespace="com.example.mapper.UserMapper"> <insert id="insert"> INSERT INTO user(name) VALUES(#{name}) </insert> <update id="update"> UPDATE user SET name = #{name} WHERE id = #{id} </update> <delete id="delete"> DELETE FROM user WHERE id = #{id} </delete> <select id="findById" resultType="com.example.entity.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 6. 编写Service和Controller层代码。在Service层调用Mapper接口中的方法执行数据库操作,在Controller层接收请求并调用Service层的方法。如: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public int insert(User user) { return userMapper.insert(user); } public int update(User user) { return userMapper.update(user); } public int delete(Long id) { return userMapper.delete(id); } public User findById(Long id) { return userMapper.findById(id); } } @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping("/") public String insert(@RequestBody User user) { userService.insert(user); return "插入成功"; } @PutMapping("/") public String update(@RequestBody User user) { userService.update(user); return "更新成功"; } @DeleteMapping("/{id}") public String delete(@PathVariable("id") Long id) { userService.delete(id); return "删除成功"; } @GetMapping("/{id}") public User findById(@PathVariable("id") Long id) { return userService.findById(id); } } ``` 通过以上步骤,我们可以在Eclipse中使用Spring Boot和MyBatis实现数据库的增删操作。 ### 回答3: Eclipse是一种常用的集成开发环境(IDE),Spring Boot是一种用于简化Spring应用程序开发的框架,MyBatis是一种轻量级的持久化框架。在Eclipse中使用Spring Boot和MyBatis可以实现增删的功能。 首先,我们需要在Eclipse中创建一个Spring Boot项目,并添加所需的依赖项。在pom.xml文件中,添加Spring Boot和MyBatis的相关依赖,以便能够使用它们的功能。 接下来,我们需要配置数据库连接。在application.properties文件中,配置数据库的相关信息,比如数据库的URL、用户名和密码等。这样,我们就能够连接到数据库了。 然后,我们需要创建实体类,用于映射数据库中的表。在实体类中定义相应的属性和方法,以及与数据库中表字段的映射关系。 接着,我们可以编写Mapper接口和Mapper XML文件。Mapper接口用于定义CRUD增删)操作的方法,而Mapper XML文件则用于编写具体的SQL语句。在Mapper XML文件中,可以使用MyBatis提供的一些标签,比如<select>、<insert>、<update>和<delete>等,来实现对数据库的操作。 最后,我们可以在适当的地方调用Mapper接口中的方法,以实现增删的功能。比如,调用insert方法实现数据的插入,调用update方法实现数据的修,调用delete方法实现数据的删除,调用select方法实现数据的询。 以上就是使用Eclipse、Spring Boot和MyBatis实现增删的简要过程。通过合理配置和调用相关的类和方法,我们能够方便地操作数据库,实现对数据的增加、删除、修询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值