赞
踩
目录
通过这篇文章,带大家通透ssm基础框架的搭建,实现一个简单的id查询用户数据的程序。
- <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 格式的配置文件)需要完成以下两个信息:
代码如下:
- # 配置数据库连接
- 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
创建一个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);
一个表对应一个实体类,想要使其建立映射关系,需要要满足以下两点:
如下代码:
- import lombok.Data;
-
- @Data
- public class user {
-
- private int id;
- private String name;
- private int age;
-
- }
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射,除了⼏ 乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作,如此厉害的框架我们该如何建立后端与数据库的联系呢?往下看~
MyBatis 需要通过如下两个部分建立后端和数据库的联系:
接下来就看看具体的代码是如何实现的吧~
Ps:
如果要在 test 包下对 mapper 接口进行测试,可以了解一下以下两个注解,
- @SpringBootTest:让当前测试单元在Spring-boot环境中运行;
- @Transactional:让当前的测试单元(类或方法)的测试不污染数据库;
创建一个 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);
-
- }
这里就需要对应接口,在resource目录下创建一个xml文件,编写sql语句。
注意:这里的xml文件名必须与配置文件中所写对应。
如下代码:
- <?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>
在服务层如何通过 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);
- }
-
- }
最后执行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。