用基础的Maven项目搭建
一个简单的Maven模块结构是这样的: -- app-parent: 一个父项目(app-parent)聚合了很多子项目(app-util\app-dao\app-web...) |-- pom.xml | |-- app-core ||---- pom.xml | |-- app-web ||---- pom.xml ......
新建一个maven项目作为父项目
子项目01:springcloud-api
实体类包pojo
package com.qing.springcloud.pojo;
import java.io.Serializable;
/**
* (Dept)实体类
*
* @author qinghua
* @since 2022-01-14 13:58:02
*/
public class Dept implements Serializable {
private static final long serialVersionUID = -39565564666543179L;
private Long id;
private String name;
private String dbSource;
public Dept(){}
public Dept(Long id, String name, String dbSource){
this.id = id;
this.name = name;
this.dbSource = dbSource;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDbSource() {
return dbSource;
}
public void setDbSource(String dbSource) {
this.dbSource = dbSource;
}
@Override
public String toString(){
return "Dept {" +
"id : " + id + ", " +
"name : " + name + ", " +
"dbSource : " + dbSource + ", " +
'}';
}
}
子项目02:springcloud-provider-dept-8001
导入依赖pom
<dependencies> <!--我们需要拿到实体类,所以需要配置api module--> <dependency> <groupId>com.qing</groupId> <artifactId>springcloud-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!----> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jetty--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency> </dependencies>
编写配置文件
server: port: 8001 mybatis: type-aliases-package: com.kuang.springcloud.pojo config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mybatis/mapper/*.xml spring: application: name: springcloud-provider-dept datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:6666/dept01?useUnicode=true&characterEncoding=utf-8 username: root password: 123456
dao
package com.qing.springcloud.dao;
import com.qing.springcloud.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* (Dept)表数据库访问层
*
* @author qinghua
* @since 2022-01-14 14:16:52
*/
@Mapper
@Repository
public interface DeptDao {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
Dept queryById(@Param("id")Long id);
/**
* 查询全部数据,
* @Param searchKey 查询条件(可为空)
* @return List
*/
List<Dept> queryAll(@Param("searchKey") String searchKey);
/**
* 新增数据
*
* @param dept 实例对象
* @return 影响行数
*/
int insert(Dept dept);
/**
* 修改数据
*
* @param dept 实例对象
* @return 影响行数
*/
int update(Dept dept);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(@Param("id")Long id);
}
service
package com.qing.springcloud.service;
import com.github.pagehelper.PageInfo;
import com.qing.springcloud.pojo.Dept;
/**
* (Dept)表服务接口
*
* @author qinghua
* @since 2022-01-14 14:16:54
*/
public interface DeptService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
Dept queryById(Long id);
/**
* 分页查询全部数据
*
* @param searchKey 查询条件(可为空)
* @param pageNum pageHelper的当前页
* @return PageInfo对象
*/
PageInfo<Dept> queryAllFy(String searchKey, int pageNum);
/**
* 新增数据
*
* @param dept 实例对象
* @return 实例对象
*/
Dept insert(Dept dept);
/**
* 修改数据
*
* @param dept 实例对象
* @return 实例对象
*/
Dept update(Dept dept);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}
controller
package com.qing.springcloud.controller;
import com.github.pagehelper.PageInfo;
import com.qing.springcloud.pojo.Dept;
import com.qing.springcloud.service.DeptService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* (Dept)表控制层
*
* @author qinghua
* @since 2022-01-14 14:16:53
*/
//@CrossOrigin
@RestController
@RequestMapping("/dept")
public class DeptController {
/**
* 服务对象
*/
@Resource
private DeptService deptService;
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("/queryById/{id}")
public ResponseEntity<Dept> queryById(@PathVariable("id") Long id) {
return ResponseEntity.ok(this.deptService.queryById(id));
}
/**
* 查询全部数据
*
* @param searchKey 查询条件(可为空)
* @param pageNum pageHelper的当前页
* @return (pageSize=)10条数据
*/
@GetMapping("/queryAll")
public ResponseEntity<PageInfo<Dept>> queryAllFy() {
String searchKey = "";
int pageNum = 1;
return ResponseEntity.ok(this.deptService.queryAllFy(searchKey, pageNum));
}
/**
* 新增数据
*
* @param dept 实体
* @return 新增结果
*/
@PostMapping("/add")
public ResponseEntity<Dept> add(Dept dept) {
return ResponseEntity.ok(this.deptService.insert(dept));
}
/**
* 编辑数据
*
* @param dept 实体
* @return 编辑结果
*/
@PutMapping("")
public ResponseEntity<Dept> edit(Dept dept) {
return ResponseEntity.ok(this.deptService.update(dept));
}
/**
* 删除数据
*
* @param id 主键
* @return 删除是否成功
*/
@DeleteMapping("")
public ResponseEntity<Boolean> deleteById(Long id) {
return ResponseEntity.ok(this.deptService.deleteById(id));
}
}
测试运行
package com.qing.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DeptProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8001.class, args);
}
}
子项目03:springcloud-consumer-dept-80 1、导入依赖
<dependencies> <dependency> <groupId>com.qing</groupId> <artifactId>springcloud-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> <scope>compile</scope> </dependency> </dependencies>
2、编写配置文件
server: port: 80
3、配置类
package com.qing.springcloud.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {//@Configuration -- spring applicationContext.xml
//配置负载均衡实现RestTemplate
// IRule
// RoundRobinRule 轮询
// RandomRule 随机
// AvailabilityFilteringRule : 会先过滤掉,跳闸,访问故障的服务~,对剩下的进行轮询~
// RetryRule : 会先按照轮询获取服务~,如果服务获取失败,则会在指定的时间内进行,重试
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
4、主启动类开启xxx注解
package com.qing.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DeptConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_80.class,args);
}
}
本文介绍如何使用Maven搭建一个包含父项目与多个子项目的结构,并详细展示了子项目中实体类定义、依赖配置、服务接口、控制器及测试运行等内容。
3124

被折叠的 条评论
为什么被折叠?



