用基础的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); } }