当前位置:   article > 正文

实现一个 Spring boot + Spring MVC + MyBatis 简单demo_springboot+springmvc+mybatis

springboot+springmvc+mybatis

目录

前言

一、项目依赖

二、配置文件

三、创建数据库和实体类

3.1、创建数据库

3.2、创建实体类

四、构建 Mapper 层代码实现(接口 + XML)

4.1、创建接口

4.2、创建 XML

4.3、XML 文件与接口的对应关系

五、实现服务层

六、实现控制器

小结


前言


通过这篇文章,带大家通透ssm基础框架的搭建,实现一个简单的id查询用户数据的程序。

一、项目依赖


  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.mybatis.spring.boot</groupId>
  8. <artifactId>mybatis-spring-boot-starter</artifactId>
  9. <version>2.3.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-devtools</artifactId>
  14. <scope>runtime</scope>
  15. <optional>true</optional>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.mysql</groupId>
  19. <artifactId>mysql-connector-j</artifactId>
  20. <scope>runtime</scope>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.projectlombok</groupId>
  24. <artifactId>lombok</artifactId>
  25. <optional>true</optional>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-test</artifactId>
  30. <scope>test</scope>
  31. </dependency>
  32. </dependencies>
  33. <build>
  34. <plugins>
  35. <plugin>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-maven-plugin</artifactId>
  38. <configuration>
  39. <excludes>
  40. <exclude>
  41. <groupId>org.projectlombok</groupId>
  42. <artifactId>lombok</artifactId>
  43. </exclude>
  44. </excludes>
  45. </configuration>
  46. </plugin>
  47. </plugins>
  48. </build>

二、配置文件


在创建完 SSM 项目后,添加了 Mybatis + MySQL 后,启动项目,一定会报错,这是正常现象,因为我们还需要在配置文件中添加一些必要信息。

在 application.properties 配置文件中(或者是 yml 格式的配置文件)需要完成以下两个信息:

  • 配置数据库连接信息。
  • 配置 Mybatis 中 xml 保存路径(规则:通过 XML 实现表操作方法的接口)。

代码如下:

  1. # 配置数据库连接
  2. spring.datasource.url=jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
  3. spring.datasource.username=root
  4. spring.datasource.password=1111
  5. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  6. # mybatis xml 保存
  7. mybatis.mapper-locations=classpath:mybatis/*Mapper.xml

三、创建数据库和实体类


3.1、创建数据库

创建一个user_message的一个数据库和一个user表,用来存放用户信息,如下代码:

  1. drop database if exists user_message;
  2. create database user_message;
  3. use user_message;
  4. -- 创建用户表
  5. create table user(
  6. id int primary key auto_increment,
  7. name varchar(20),
  8. age int
  9. );
  10. -- 栗子
  11. insert into user values(null, "zhangsan", 18);
  12. insert into user values(null, "lisi", 19);
  13. insert into user values(null, "wangwu", 20);

3.2、创建实体类

一个表对应一个实体类,想要使其建立映射关系,需要要满足以下两点:

  • 具有 getter 和 setter 方法;
  • 属性名必须与sql字段名一致;

如下代码:

  1. import lombok.Data;
  2. @Data
  3. public class user {
  4. private int id;
  5. private String name;
  6. private int age;
  7. }

四、构建 Mapper 层代码实现(接口 + XML)


MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射,除了⼏ 乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作,如此厉害的框架我们该如何建立后端与数据库的联系呢?往下看~

MyBatis 需要通过如下两个部分建立后端和数据库的联系:

  • 接口(给程序其他类调用的,实现了表的所有操作方法)。
  • XML 实现接口(用来写具体的 SQL 语句)。

接下来就看看具体的代码是如何实现的吧~

Ps:

如果要在 test 包下对 mapper 接口进行测试,可以了解一下以下两个注解,

  • @SpringBootTest:让当前测试单元在Spring-boot环境中运行;
  • @Transactional:让当前的测试单元(类或方法)的测试不污染数据库;

4.1、创建接口

创建一个 UserMapper 的接口,接口下的每一个方法就对应一个对表的操作,这里实现的是根据 id 查询用户信息,如下代码:

  1. import com.example.demo.entity.User;
  2. import org.apache.ibatis.annotations.Mapper;
  3. import org.apache.ibatis.annotations.Param;
  4. // @Mapper 注解和五大类注解一样,都会随着 Spring 的启动而注入到容器中
  5. @Mapper
  6. public interface UserMapper {
  7. //根据 id 来获取用户信息
  8. User getUserById(@Param("user_id") Integer id);
  9. }

4.2、创建 XML

这里就需要对应接口,在resource目录下创建一个xml文件,编写sql语句。

注意:这里的xml文件名必须与配置文件中所写对应。

 如下代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserMapper">
  4. <select id="getUserById" resultType="com.example.demo.entity.User">
  5. select * from user where id = ${user_id}
  6. </select>
  7. </mapper>

4.3、XML 文件与接口的对应关系

五、实现服务层


在服务层如何通过 id 获取到最终的实体类呢?Spring 还有个非常强大的地方就在于它可以注入接口,通过接口中的方法找到最后对应的实体类对象。

代码实现如下:

  1. import com.example.demo.entity.User;
  2. import com.example.demo.mapper.UserMapper;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. @Service
  6. public class UserService {
  7. @Autowired
  8. private UserMapper userMapper;
  9. public User getUserById(Integer id) {
  10. return userMapper.getUserById(id);
  11. }
  12. }

六、实现控制器


这里直接于用户进行交互,通过用户传入 id 参数,响应对应的用户信息;

代码如下:

  1. import com.example.demo.entity.User;
  2. import com.example.demo.service.UserService;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. @RestController
  7. @RequestMapping("/user")
  8. public class UserController {
  9. @Autowired
  10. private UserService userService;
  11. @RequestMapping("/getuserbyid")
  12. public User getUserById(Integer id) {
  13. if(id == null) return null;
  14. return userService.getUserById(id);
  15. }
  16. }

最后执行结果如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/875399
推荐阅读
相关标签
  

闽ICP备14008679号