18-服务提供者 account
目录
本节课我们来实现服务提供者 account,account 为系统提供所有的账户相关业务,包括用户和管理员登录、退出,具体实现如下所示。
在父工程下创建建名为 account 的 Module,pom.xml 添加相关依赖
account 配置文件从 Git 仓库拉取,所以需要添加 Spring Cloud Config 相关依赖;同时需要访问数据库,因此还要添加 MyBatis 相关依赖。
<!-- eurekaclient --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- 配置中心 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <!-- MySQL 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency>
在 resources 目录下创建 bootstrap.yml,在该文件中配置拉取 Git 仓库相关配置文件的信息
spring: cloud: config: name: account # 对应的配置文件名称 label: master # Git仓库分支名 discovery: enabled: true serviceId: configserver # 连接的配置中心名称 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
在 Git 仓库配置文件 account.yml 中添加配置信息,服务提供者 account 集成 MyBatis 环境
server: port: 8010 spring: application: name: account datasource: name: orderingsystem url: jdbc:mysql://localhost:3306/orderingsystem?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true mybatis: mapper-locations: classpath:mapping/*.xml type-aliases-package: com.southwind.entity
创建entity包,新建 Account 类
@Data public class Account { private long id; private String username; private String password; private String nickname; private String gender; private String telephone; private Date registerdate; private String address; }
新建 User 类继承 Account 类,对应数据表 t_user
@Data public class User extends Account { }
新建 Admin 类继承 Account 类,对应数据表 t_admin
@Data public class Admin extends Account { }
创建 repository 包,新建 UserRepository 接口
public interface UserRepository { public User login(String username, String password); }
新建 AdminRepository 接口
public interface AdminRepository { public Admin login(String username, String password); }
在 resources 目录下创建 mapping 文件夹,存放 Mapper.xml
新建 UserRepository.xml,编写 UserRepository 接口方法对应的 SQL
<mapper namespace="com.southwind.repository.UserRepository"> <select id="login" resultType="User"> select * from t_user where username = #{param1} and password = #{param2} </select> </mapper>
新建 AdminRepository.xml,编写 AdminRepository 接口方法对应的 SQL
<mapper namespace="com.southwind.repository.AdminRepository"> <select id="login" resultType="Admin"> select * from t_admin where username = #{param1} and password = #{param2} </select> </mapper>
将 Mapper 注入,在启动类添加注解
@MapperScan("com.southwind.repository")
新建 AccountHandler,将 UserRepository 和 AdminRepository 通过 @Autowired 注解进行注入,完成相关业务逻辑
@RestController @RequestMapping("/account") public class AccountHandler { @Autowired private UserRepository userRepository; @Autowired private AdminRepository adminRepository; @GetMapping("/login/{username}/{password}/{type}") public Account login(@PathVariable("username") String username, @PathVariable("password") String password, @PathVariable("type") String type) { Account account = null; switch (type){ case "user": account = userRepository.login(username, password); break; case "admin": account = adminRepository.login(username, password); break; } return account; } }
依次启动注册中心、configserver、AccountApplication。调用接口
curl -X GET http://localhost:8010/account/login/zhangsan/123123/user
总结
本节课我们讲解了项目实战 account 模块的搭建,作为一个服务提供者,account 为整个系统提供账户服务,包括用户和管理员登录。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com
文章标题:18-服务提供者 account
文章字数:823
本文作者:神秘的小岛岛
发布时间:2020-07-13, 16:29:51
最后更新:2020-07-14, 23:01:53
原始链接:https://www.tuyrk.cn/gitchat/springcloud-minimal/18-provider-account/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。