package com.tplink.nbu.cloud.service;
import com.tplink.nbu.cloud.dao.UserDao;
import com.tplink.nbu.cloud.exceptions.ParamsException;
import com.tplink.nbu.cloud.entity.User;
import com.tplink.nbu.cloud.utils.AssertUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.tplink.nbu.cloud.utils.Md5Util;
import java.io.*;
import java.util.List;
import java.util.Properties;
@Service
public class UserService {
@Autowired
private UserDao userDao;
// private UserCassDao userDao;
public User userLogin(String userEmail,String userPwd) {
// 1. 参数判断,判断用户姓名、用户密码非空
checkLoginParams(userEmail, userPwd);
// 2. 调用数据访问层,通过用户名查询用户记录,返回用户对象
User user = findByEmail(userEmail);
// 3. 判断用户对象是否为空
AssertUtil.isTrue(user == null,"邮箱不存在或已注销");
// 4. 判断密码是否正确,比较客户端传递的用户密码与数据库中查询的用户对象中的用户密码
checkUserPwd(userPwd, user.getPassword());
// 返回构建用户对象
return user;
}
private void checkLoginParams(String userEmail, String userPwd) {
AssertUtil.isTrue(StringUtils.isBlank(userEmail),"邮箱不能为空");
AssertUtil.isTrue(StringUtils.isBlank(userPwd),"用户密码不能为空");
}
private void checkUserPwd(String userPwd, String userPwdTrue) {
AssertUtil.isTrue(!(StringUtils.equals( Md5Util.encode(userPwd),userPwdTrue)),"密码错误");
}
public User userSignin(String userName, String userPwd, String userEmail, String userAddr) {
User user = new User(userName, Md5Util.encode(userPwd) , userEmail, userAddr);
// 1. 参数判断,判断用户姓名、用户密码、邮箱、地址非空
checkSigninParams(userName, userPwd, userEmail, userAddr);
String basePath = "./src/main/resources/config.properties";
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(new File(basePath)));
} catch (FileNotFoundException e) {
e.printStackTrace();
return user;
}
Properties prop = new Properties();
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
return user;
}
String totalSigninNumber = prop.getProperty("TotalSigninNumber");
System.out.println(totalSigninNumber);
int signinNumber = Integer.parseInt(totalSigninNumber);
System.out.println(signinNumber);
long count = Count();
if (signinNumber > count){
// 2. 调用数据访问层,增加用户数据
User user_ = save(user);
} else{
throw new ParamsException("超过注册上限");
}
// 返回构建用户对象
return user;
}
public User userEdit(String userName, String userPwd, String userEmail, String userAddr) {
checkSigninParams(userName, userPwd, userEmail, userAddr);
User user_ = findByEmail(userEmail);
user_.setAddr(userAddr);
user_.setUsername(userName);
// 1. 参数判断,判断用户姓名、用户密码、邮箱、地址非空
User userReturn = edit(user_);
// 返回构建用户对象
return userReturn;
}
public boolean userDelete(String userPwd, String userEmail) {
User user_ = findByEmail(userEmail);
boolean res = false;
String userPassword = Md5Util.encode(userPwd);
if (userPassword.equals(user_.getPassword())){
int id = user_.getId();
res = deleteById(id);
}
// 返回构建用户对象
return res;
}
private void checkSigninParams(String userName, String userPwd, String userEmail, String userAddr) {
AssertUtil.isTrue(StringUtils.isBlank(userName),"用户名不能为空");
AssertUtil.isTrue(StringUtils.isBlank(userPwd),"用户密码不能为空");
AssertUtil.isTrue(StringUtils.isBlank(userEmail),"邮箱不能为空");
AssertUtil.isTrue(StringUtils.isBlank(userAddr),"用户地址不能为空");
}
/**
* 根据用户ID,查询用户信息
*/
public User findById(int userId)
{
return userDao.findById(userId).get();
}
/**
* 根据用户Email,查询用户信息
*/
public User findByEmail(String email)
{
return userDao.findUserByEmail(email);
}
/**
* 查询用户列表
*/
public long Count()
{
return userDao.count();
}
/**
* 计算 count
*/
public List<User> findAll()
{
return userDao.findAll();
}
/**
* 新增用户
*/
public User save(User user)
{
return userDao.save(user);
}
/**
* 修改用户
*/
public User edit(User user)
{
return userDao.save(user);
}
/**
* 删除用户
*/
public boolean deleteById(int userId)
{
boolean result = true;
try
{
userDao.deleteById(userId);
}
catch(Exception ex)
{
result = false;
}
return result;
}
}
数据库开发基础代码1111
需积分: 0 48 浏览量
更新于2022-09-20
收藏 673KB ZIP 举报
在IT行业中,数据库开发是构建高效、稳定和可扩展应用程序的核心部分。本资源"数据库开发基础代码1111"似乎是一个学习资料,虽然描述为空,但我们可以从标签"数据库"以及压缩包内的文件名"SpringBoot1"来推测其内容可能与数据库的使用和Spring Boot框架的集成有关。下面,我们将深入探讨这两个关键知识点。
让我们关注数据库。数据库是一种存储和管理数据的系统,允许程序员、业务分析师和数据科学家进行数据的查询、存储和分析。常见的关系型数据库管理系统(RDBMS)包括MySQL、Oracle、SQL Server和PostgreSQL等。在数据库开发中,了解SQL语言至关重要,它是用于与数据库交互的标准语言,用于创建、查询、更新和删除数据。
数据库设计包括概念设计、逻辑设计和物理设计。概念设计是将业务需求转化为数据模型,通常使用实体-关系(ER)图表示。逻辑设计将ER图转换为特定数据库系统的表和关系,而物理设计则涉及优化存储和访问策略,如索引和分区。
接下来,我们讨论Spring Boot。Spring Boot是Java生态系统中的一个流行框架,它简化了创建生产级别的基于Spring的应用程序。Spring Boot以其"开箱即用"的理念著称,提供了默认配置,减少了大量初始化工作。对于数据库集成,Spring Boot支持多种数据库,包括关系型和非关系型数据库。
Spring Data是Spring Boot的一个关键组件,它提供了一种声明式的方式来访问数据库。通过使用JPA(Java Persistence API)和ORM(对象关系映射)框架,如Hibernate,开发者可以轻松地实现CRUD(创建、读取、更新和删除)操作。Spring Data JPA允许我们通过简单的接口定义,自动生成底层的SQL查询,提高了开发效率。
Spring Boot还提供了Spring JDBC模板,对于那些不使用ORM框架的情况,这是一个强大的工具。它可以更直接地处理SQL语句,同时仍然保持Spring的依赖注入和异常处理特性。
在实际项目中,Spring Boot和数据库的集成通常涉及以下步骤:
1. 添加依赖:在`pom.xml`或`build.gradle`文件中引入相应的数据库驱动和Spring Data JPA依赖。
2. 配置数据库连接:在`application.properties`或`application.yml`中设置数据库URL、用户名、密码等信息。
3. 定义实体类:这些类对应数据库表,使用JPA注解如`@Entity`、`@Table`等。
4. 创建Repository接口:Spring Data会自动实现这些接口,提供基本的CRUD操作。
5. 在服务层实现业务逻辑:通过Repository接口操作数据。
"数据库开发基础代码1111"的学习资料可能涵盖了数据库的基本概念、SQL语言、Spring Boot的数据库集成、Spring Data JPA的使用以及如何在实际项目中配置和使用这些技术。学习这些内容将帮助初学者掌握数据库开发的关键技能,并能够利用Spring Boot高效地构建数据驱动的应用程序。
weixin_44474837
- 粉丝: 2
- 资源: 20
最新资源
- (176023044)海康NVR开发SDK,sdk开发文档
- 国土空间规划信息平台建设方案与关键技术解析
- (2782218)学生信息管理系统(基于java)
- (175218226)利用仿真实现定时器设计的门铃
- (176797002)大华平台SDK接口手册(C++版)
- 手机配件自动摆盘上料机sw17可编辑全套技术资料100%好用.zip
- (177533624)python-考试管理系统,考题管理,自动阅卷等 .zip
- (8772844)时钟芯片DS1302通讯C代码
- Arthas是阿里巴巴开源的Java诊断工具 Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断
- (173447814)springboot房产中介系统 (源码+数据库)312341
- 【锂电池剩余寿命预测】CNN-Transformer锂电池剩余寿命预测,马里兰大学锂电池数据集(Pytorch完整源码和数据)
- (179617412)永磁同步电机无位置传感器控制,采用的是龙贝格,基于模型的 定点开发,仿真效果和实际95%高度吻合,可以仿真学习,也可以直接移植到
- (179845616)智慧养老中心管理系统 JAVA毕业设计 源码+数据库+论文+启动教程(SpringBoot+Vue.JS).zip
- (179719648)智慧养老平台 SSM毕业设计 源码+数据库+论文(JAVA+SpringBoot+Vue.JS).zip
- 语音通话降噪-常用测试音频分享
- 水果分拣机15可编辑全套技术资料100%好用.zip