SpringBoot【SpringMVC+mybatis完成CRUD案例】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文介绍SpringBoot整合SpringMVC和mybatis在IDEA中通过maven项目来对user表数据完成CRUD操作,前端使用Thymeleaf来实现。


文章目录

   一、创建项目

       1.创建maven项目

       2.完成相关配置

           2.1 pom添加相关依赖

           2.2 全局配置文件

           2.3 表结构设计

           2.4 创建实体类

   二、实现业务

       1.查询用户信息

           1.2 创建业务层

           1.3 创建控制层

           1.4 创建展示页面

           1.5 启动测试

       2.添加用户信息

           2.1 mapper中增加添加用户的操作

           2.2 业务层

           2.3 控制层处理

           2.4 页面处理

           2.5 测试

       3.修改用户信息

           3.1 mapper层

           3.2 业务逻辑层

           3.3 控制层

           3.4 展示层

           3.5 测试

       4.删除用户信息

 本文介绍SpringBoot整合SpringMVC和mybatis在IDEA中通过maven项目来对user表数据完成CRUD操作,前端使用Thymeleaf来实现。

一、创建项目

1.创建maven项目

创建maven项目

image.png

指定项目的相关maven坐标信息

image.png

配置项目相关的信息,比如项目名称及项目的存储位置

image.png

image.png

创建成功~

2.完成相关配置

2.1 pom添加相关依赖

在pom中添加相关的依赖:

 <!-- 配置依赖的父类 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.14</version>
    </dependency>
</dependencies>

2.2 全局配置文件

 在main/src/resources目录下创建application.properties文件

image.png

# jdbc的相关配置信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm
spring.datasource.username=root
spring.datasource.password=123456
# 连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# mybatis给package设置别名
mybatis.type-aliases-package=com.dpb.pojo

2.3 表结构设计

&esmp; 创建如下的数据表

CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) DEFAULT NULL, 
`age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.4 创建实体类

 创建user的实体类

/**
 * @program: springboot-ssm
 * @description: 用户的实体类
 * @author: 波波烤鸭
 * @create: 2019-05-15 19:41
 */
public class Users {
    private Integer id;
    private String name;
    private Integer age;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = 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;
    }
}

二、实现业务

1.查询用户信息

1.1 创建mapper接口和映射配置文件,简单案例就没有使用mybatis的逆向工程生成相关文件了

/**
 * @program: springboot-ssm
 * @description: 用户实体对应的mapper接口
 * @author: 波波烤鸭
 * @create: 2019-05-15 19:46
 */
public interface UsersMapper {
    /**
     * 查询所有的用户信息
     * @return
     */
    List<Users> query();
}

映射文件,注意在resources下创建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.dpb.mapper.UsersMapper">
    <select id="query" resultType="Users">
        select * from t_user
    </select>
</mapper>

image.png

application.properties中添加对应的设置

image.png

1.2 创建业务层

/**
 * @program: springboot-ssm
 * @description: 业务层的实现类
 * @author: 波波烤鸭
 * @create: 2019-05-15 19:55
 */
@Service
@Transactional
public class UserServiceImpl implements UsersService {
    @Resource
    private UsersMapper usersMapper;
    @Override
    public List<Users> query() {
        return usersMapper.query();
    }
}

1.3 创建控制层

/**
 * @program: springboot-ssm
 * @description: 用户的控制层
 * @author: 波波烤鸭
 * @create: 2019-05-15 19:57
 */
@Controller
@RequestMapping("/users")
public class UsersController {
    @Resource
    private UsersService usersService;
    /**
     * 页面跳转
     */
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page){
        return page;
    }
    /**
     * 查询用户信息
     * @return
     */
    @RequestMapping("/query")
    public String queryUser(Model model){
        model.addAttribute("list",usersService.query());
        return "users";
    }
}

1.4 创建展示页面

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户管理界面</title>
</head>
<body>
    <h1>用户管理</h1>
    <table border="1" style="width:300px;">
        <tr>
            <th>用户 ID</th>
            <th>用户姓名</th>
            <th>用户年龄</th>
        </tr>
        <tr th:each="user : ${list}">
            <td th:text="${user.id}"></td>
            <td th:text="${user.name}"></td>
            <td th:text="${user.age}"></td>
        </tr>
    </table>
</body>
</html>

1.5 启动测试

 在com.dpb 下创建启动类

/**
 * @program: springboot-ssm
 * @description: 启动类
 * @author: 波波烤鸭
 * @create: 2019-05-15 19:39
 */
@SpringBootApplication
//@MapperScan 用户扫描MyBatis的Mapper接口
@MapperScan("com.dpb.mapper")
public class Start {
    public static void main(String[] args) {
        SpringApplication.run(Start.class,args);
    }
}

image.png

操作成功~

2.添加用户信息

2.1 mapper中增加添加用户的操作

void insertUser(Users users);
<insert id="insertUser" parameterType="Users">
     insert into t_user(name,age)values(#{name},#{age})
 </insert>

2.2 业务层

 @Override
 public void insertUser(Users users) {
     usersMapper.insertUser(users);
 }

2.3 控制层处理

    /**
     * 添加用户信息
     * @return
     */
    @RequestMapping("/save")
    public String insertUser(Users users){
        usersService.insertUser(users);
        return "redirect:/users/query";
    }

2.4 页面处理

userAdd.html页面

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户管理界面</title>
</head>
<body>
    <h1>添加用户</h1>
    <form th:action="@{/users/save}" method="post">
        用户姓名:<input type="text" name="name"/><br/>
        用户年龄:<input type="text" name="age"/><br/>
        <input type="submit" value="确定"/><br/>
    </form>
</body>
</html>

2.5 测试

image.png

image.png

3.修改用户信息

3.1 mapper层

    Users queryById(Integer id);
    void update(Users users);

 

    <select id="queryById"  resultType="Users">
        select * from t_user where id = #{id}
    </select>
    <update id="update" parameterType="Users">
        update t_user set name=#{name},age=#{age} where id = #{id}
    </update>

3.2 业务逻辑层

 

    @Override
    public Users queryUsersById(Integer id) {
        return this.usersMapper.queryById(id);
    }
    @Override
    public void updateUser(Users users) {
        this.usersMapper.update(users);
    }

3.3 控制层

 

    @RequestMapping("/updateInfo")
    public String updateInfo(Model model,Integer id){
        model.addAttribute("users",this.usersService.queryUsersById(id));
        return "/usersUpdate";
    }
    @RequestMapping("/update")
    public String updateUser(Users users){
        this.usersService.updateUser(users);
        return "redirect:/users/query";
    }

3.4 展示层

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户管理界面</title>
</head>
<body>
    <h1>添加用户</h1>
    <form th:action="@{/users/update}" method="post">
        <input type="hidden" name="id" th:value="${users.id}">
        用户姓名:<input type="text" name="name" th:value="${users.name}"/><br/>
        用户年龄:<input type="text" name="age" th:value="${users.age}"/><br/>
        <input type="submit" value="确定"/><br/>
    </form>
</body>
</html>

image.png

3.5 测试

启动程序,访问演示

image.png

image.png

image.png

4.删除用户信息

后台代码

控制层

@RequestMapping("/delete")
public String delete(Integer id){
    this.usersService.delete(id);
    return "redirect:/users/query";
}

业务层

 @Override
 public void delete(Integer id) {
     this.usersMapper.delete(id);
 }

mapper

 void delete(Integer id);
 void delete(Integer id);

页面处理

image.png

测试搞定

image.png

image.png

~好了,到此SpringBoot+SpringMVC+Mybatis+Thymeleaf的CRUD案例完成!


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
5
分享
相关文章
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
39 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
32 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
40 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
30 0
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
23 0
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
54 0
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
115 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
256 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
6月前
|
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
165 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
1206 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等