1 版本要求
注意一些版本要求为(不满足可能会报404错误):
- spring6
- jdk17
- tomcat10
2 配置
具体配置使用上一节内容进行项目总体配置,并进行tomcat的配置(加入部署包)
检查:
在src -> main -> java
文件夹下新建包为 com.example.config
,具体配置文件包括:
- 配置类
MyWebAppInitializer.java
:总体配置类,指定web容器对应的配置类(WebMvcJavaConfig.class),root容器对应的配置类(MapperJavaConfig.class, ServiceJavaConfig.class, DataSourceJavaConfig.class)和指定dispatcherServlet处理路径,通常为 / 。本类作为子类实现了WebApplicationInitializer类,在类加载器中会优先运行WebApplicationInitializer的实现类,因此该代码最先被运行WebMvcJavaConfig.java
:控制层配置类ServiceJavaConfig.java
:业务层配置类MapperJavaConfig.java
:持久层配置类,负责其中的mybatis部分DataSourceJavaConfig.java
:持久层配置类,负责其中的数据库连接部分
- xml文件
jdbc.xml
logback.xml
mybatis-config.xml
3 测试代码
3.1 实体类
后台数据库中包括这些字段(did字段可以不要):
src -> main -> java -> com -> example -> pojo
新建Employee.java
package com.example.pojo;
import lombok.Data;
/**
* @Author: yrf
* @description:
*/
@Data
public class Employee {
private Integer eid;
private String emp_name;
private Integer age;
private String sex;
private String email;
}
其中import lombok.Data;
可以直接快捷使用getter和setter方法
3.2 controller
src -> main -> java -> com -> example -> controller
新建EmployeeController.java
package com.example.controller;
import com.example.pojo.Employee;
import com.example.service.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author: yrf
* @description:
*/
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = "getAll", method = RequestMethod.GET)
public List<Employee> getAllList(){
List<Employee> allList = employeeService.getAllList();
return allList;
}
}
3.3 service
分为接口和实现类
- 接口
src -> main -> java -> com -> example -> service
新建EmployeeService.java
package com.example.service;
import com.example.pojo.Employee;
import java.util.List;
public interface EmployeeService {
List<Employee> getAllList();
}
- 实现类
src -> main -> java -> com -> example -> service -> impl
新建EmployeeServiceImpl.java
package com.example.service.impl;
import com.example.mapper.EmployeeMapper;
import com.example.pojo.Employee;
import com.example.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author: yrf
* @description:
*/
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
@Override
public List<Employee> getAllList() {
return employeeMapper.getAllList();
}
}
注意:这里的 @Autowired private EmployeeMapper employeeMapper;
会有下波浪线的报错,但是这是因为mapper使用配置类`` `MapperJavaConfig.java```进行自动装配,不能在代码未运行时进行识别,但是对代码正常运行不会产生影响
//设置mapper接口和xml文件所在的共同包
mapperScannerConfigurer.setBasePackage("com.example.mapper");
3.4 mapper
- 接口
src -> main -> java -> com -> example -> mapper
新建接口EmployeeMapper.java
package com.example.mapper;
import com.example.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* @Author: yrf
* @description:
*/
public interface EmployeeMapper {
List<Employee> getAllList();
}
src -> resources -> com -> example -> mapper
新建EmployeeMapper.xml
,注意mapper.xml所处的资源文件夹路径要与接口所处的文件夹相对路径一样(均为com -> example -> mapper
)
- 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.mapper.EmployeeMapper">
<select id="getAllList" resultType="Employee">
select * from t_employee
</select>
</mapper>
4 总结
以上就是一个ssm工程完整的测试demo,如果运行无误,就可以在打开http://localhost:8080/module01_war/employee/getAll界面时显示后台数据库中Employee的所有内容了