1 数据表
CREATE TABLE sm_user (
id int not null primary key auto_increment,
username varchar(256) not null,
age int not null default 0,
createtime int not null default 0
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2 pom.xml依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>shirojwtdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>shirojwtdemo</name>
<description>shirojwtdemo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</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>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
3目录结构

4 编码过程
4.1 添加实体类
package com.example.shirojwtdemo.user.entity;
import lombok.Data;
@Data
public class UserEntity {
private int id;
private String username;
private String passwd;
private String salt;
private int createtime;
}
4.2 添加mapper类
package com.example.shirojwtdemo.user.mapper;
import com.example.shirojwtdemo.user.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface UserMapper {
public UserEntity getUserById(int id);
}
4.3添加xml映射文件
为了代码阅读方便,一般把xml映射文件放置在mapper文件所在目录的同级文件夹的子文件夹xml下,并取与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.example.shirojwtdemo.user.mapper.UserMapper">
<resultMap id="UserEntity" type="com.example.shirojwtdemo.user.entity.UserEntity">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="passwd" jdbcType="VARCHAR" property="passwd" />
<result column="salt" jdbcType="VARCHAR" property="salt" />
<result column="createtime" jdbcType="INTEGER" property="createtime" />
</resultMap>
<select id="getUserById" resultMap="UserEntity">
SELECT * FROM sb_user WHERE id = #{id}
</select>
</mapper>
4.4 配置映射文件的扫描路径
由于xml映射文件放置在java的目录下,为了让编译器发现、包含xml,则需要进行相应的配置,首先在pom.xml文件包含java目录下的资源,如下图:

其次,需要在application.yml添加mapper xml文件的位置:
mapper-locations
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 12345678
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath*:com/example/shirojwtdemo/*/mapper/xml/*.xml
4.5 实现Service类
package com.example.shirojwtdemo.user.service;
import com.example.shirojwtdemo.user.entity.UserEntity;
import com.example.shirojwtdemo.user.mapper.UserMapper;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserMapper userMapper;
UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public UserEntity getUserById(int id) {
return userMapper.getUserById(id);
}
}
4.6 实现测试控制器
package com.example.shirojwtdemo.user.controller;
import com.example.shirojwtdemo.user.entity.UserEntity;
import com.example.shirojwtdemo.user.service.UserService;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public UserEntity getUserById(@PathVariable("id") int id) {
return userService.getUserById(id);
}
}
5 测试
运行服务器,在浏览器中访问
http://localhost:8080/user/100
返回:
{
"id": 100,
"username": "Pearson",
"passwd": "@#!39929",
"salt": "89w",
"createtime": 158998284
}
网友评论