实现一个 Spring boot + Spring MVC + MyBatis 简单demo

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 实现一个 Spring boot + Spring MVC + MyBatis 简单demo,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

前言

一、项目依赖

二、配置文件

三、创建数据库和实体类

3.1、创建数据库

3.2、创建实体类

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

4.1、创建接口

4.2、创建 XML

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

五、实现服务层

六、实现控制器

小结


前言


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

实现一个 Spring boot + Spring MVC + MyBatis 简单demo

一、项目依赖


实现一个 Spring boot + Spring MVC + MyBatis 简单demo

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.3.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

二、配置文件


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

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

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

代码如下:

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

三、创建数据库和实体类


3.1、创建数据库

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

drop database if exists user_message;
create database user_message;
use user_message;

-- 创建用户表
create table user(
    id int primary key auto_increment,
    name varchar(20),
    age int
);

-- 栗子
insert into user values(null, "zhangsan", 18);
insert into user values(null, "lisi", 19);
insert into user values(null, "wangwu", 20);

3.2、创建实体类

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

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

如下代码:

import lombok.Data;

@Data
public class user {

    private int id;
    private String name;
    private int age;

}

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


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

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

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

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

Ps:

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

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

4.1、创建接口

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

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

// @Mapper 注解和五大类注解一样,都会随着 Spring 的启动而注入到容器中
@Mapper
public interface UserMapper {

    //根据 id 来获取用户信息
    User getUserById(@Param("user_id") Integer id);

}

4.2、创建 XML

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

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

实现一个 Spring boot + Spring MVC + MyBatis 简单demo

 如下代码:

<?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.example.demo.mapper.UserMapper">

    <select id="getUserById" resultType="com.example.demo.entity.User">
        select * from user where id = ${user_id}
    </select>

</mapper>

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

实现一个 Spring boot + Spring MVC + MyBatis 简单demo

五、实现服务层


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

代码实现如下:

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }

}

六、实现控制器


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

代码如下:

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/getuserbyid")
    public User getUserById(Integer id) {
        if(id == null) return null;
        return userService.getUserById(id);
    }

}

最后执行结果如下:

实现一个 Spring boot + Spring MVC + MyBatis 简单demo

实现一个 Spring boot + Spring MVC + MyBatis 简单demo

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/130362.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!