1、首先我们建立一个SpringBoot项目(前提是环境和依赖地址等都已经搭建好)
2、然后找到我们父工程的pom文件,里面加入web依赖
<?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>
<packaging>pom</packaging>
<modules>
<module>demo1-1</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.10</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1</name>
<description>demo1</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--web 没有这个项目启动不了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus 持久层-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
<!-- mybatis-plus 持久层-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、然后我们右键项目,建立模块
4、子工程的pom
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>demo1</artifactId>
<groupId>com.example</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>demo1-1</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.7</version>
</dependency>
</dependencies>
</project>
5、启动类,加pringBootApplication注解
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class demo1_1 {
public static void main(String[] args) {
System.out.println("Hello world!");
SpringApplication.run(demo1_1.class);
}
}
6、配置文件,如果复制到自己项目上启动有问题,建议手敲,然后启动项目即可
server:
port: 9091
spring:
datasource:
username: root
password: 123
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.jdbc.Driver
mybatis-plus:
mapper-locations: classpath:com.example.mapper/**/*.xml #找xml文件用的
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #sql打印日志
7、实体代码
package com.example.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author testjava
* @since 2022-05-03
*/
@Data
@EqualsAndHashCode(callSuper = false)
//@Accessors(chain = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WaterMeter implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("waterMeter")
@ExcelProperty(value = "水表名")
private String waterMeter;
@TableField("waterMeterNo")
@ExcelProperty(value = "水表号")
private Integer waterMeterNo;
@TableField("acquisitionTime")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelProperty(value = "采集时间")
private Date acquisitionTime;
@TableField("data")
@ExcelProperty(value = "数据")
private BigDecimal data;
@TableField("currentReading")
@ExcelProperty(value = "当前读数")
private BigDecimal currentReading;
@TableField("consumption")
@ExcelProperty(value = "用量")
private BigDecimal consumption;
@TableField(value = "createTime",fill = FieldFill.INSERT)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelProperty(value = "创建时间")
private Date createTime;
@TableField(value = "updateTime",fill = FieldFill.INSERT_UPDATE)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelProperty(value = "修改时间")
private Date updateTime;
@TableField(value = "del_flag")
private Integer delFlag;
}
8、mapper文件和mapping文件
package com.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.WaterMeter;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface WaterMeterMapper extends BaseMapper<WaterMeter> {
WaterMeter getDataById(String id);
}
<?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.WaterMeterMapper">
<select id="getDataById" resultType="com.example.entity.WaterMeter">
select * from water_meter where id = #{id} and del_flag = 0
</select>
</mapper>
9、controller
package com.example.controller;
import com.example.entity.WaterMeter;
import com.example.service.WaterMeterService;
import com.example.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/com/wang/test")
public class WaterMeterController {
@Autowired
private WaterMeterService waterMeterService;
@PostMapping("/getDataById")
public Result a(String id){
WaterMeter waterMeter = waterMeterService.getDataById(id);
return Result.ok(waterMeter);
}
}
10、Service和ServiceImpl
package com.example.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.WaterMeter;
public interface WaterMeterService extends IService<WaterMeter> {
WaterMeter getDataById(String id);
}
package com.example.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.entity.WaterMeter;
import com.example.mapper.WaterMeterMapper;
import com.example.service.WaterMeterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class WaterMeterServiceImpl extends ServiceImpl<WaterMeterMapper, WaterMeter> implements WaterMeterService {
@Autowired
private WaterMeterMapper waterMeterMapper;
@Override
public WaterMeter getDataById(String id) {
return waterMeterMapper.getDataById(id);
}
}
11、返回结果类
package com.example.utils;
public class Result<T> {
private static final String SUCCESS = "SUCCESS";
private static final String FAIL = "FAIL";
private String code;
private String message;
private T Data;
public Result(String code) {
this.code = code;
}
public Result(String code, String message) {
super();
this.code = code;
this.message = message;
}
public Result(String code, String message, T data) {
super();
this.code = code;
this.message = message;
Data = data;
}
public Result() {
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return Data;
}
public void setData(T data) {
Data = data;
}
public static <T> Result<T> ok(T object) {
return new Result<T>(SUCCESS, "", object);
}
public static <T> Result<T> ok() {
return new Result<T>(SUCCESS);
}
public static <T> Result<T> nok(String message) {
return new Result<T>(FAIL, message);
}
public static <T> Result<T> nok() {
return new Result<T>(FAIL);
}
public static <T> Result<T> nok(String code, String message) {
return new Result<T>(code, message);
}
public static <T> Result<T> nok(String code, String message, T object) {
return new Result<T>(code, message, object);
}
}
12、代码整体结构
13、在.idea下的workspace下添加以下代码可以将服务放到services下进行统一管理
<component name="RunDashboard">
<option name="configurationTypes">
<set>
<option value="SpringBootApplicationConfigurationType" />
</set>
</option>
</component>
请求测试地址:http://localhost:9091/com/wang/test/getDataById ,自己写自己地址