package com.hpe.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import com.hpe.dao.IAccountDao;
import com.hpe.po.Account;
import com.hpe.po.AccountLog;
import com.hpe.po.AccountVo;
import com.hpe.util.DBUtil;
//账户数据访问层实现类
public class AccountDaoImpl implements IAccountDao {
//查询余额
public Account viewBalance(int userId) {
String sql = "select * from account where userId =? ";
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Account account = null;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, userId);
resultSet = preparedStatement.executeQuery();
if (resultSet.next()){
account = new Account();
//账户
account.setAccountId(resultSet.getInt("accountId"));
//账户余额
account.setAccount_money(resultSet.getDouble("account_money"));
//用户ID
account.setUserId(userId);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
DBUtil.releaseDB(resultSet, preparedStatement, connection);
}
return account;
}
//存款
public boolean saveAccount(AccountVo accountVo) {
//创建连接
Connection connection = null;
//创建对象
PreparedStatement preparedStatement = null;
//返回结果,默认false
boolean result = false;
try {
//存款SQL语句
String str = "update account set account_money = account_money+? where accountId =? ";
//创建连接
connection = DBUtil.getConnection();
//开启事务
connection.setAutoCommit(false);
//预编译SQL语句
preparedStatement = connection.prepareStatement(str);
//填充占位符
preparedStatement.setDouble(1, accountVo.getMoney());
preparedStatement.setDouble(2, accountVo.getAccountId());
//执行SQL语句
preparedStatement.executeUpdate();
//释放资源
DBUtil.releaseDB(null, preparedStatement, null);
//存款日志操作
String sql = "insert into account_log (accountId,transfer_account,type,log_time,money) values(?,?,?,?,?) ";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, accountVo.getAccountId());
preparedStatement.setInt(2, accountVo.getTransfer_account());
preparedStatement.setString(3, accountVo.getType());
preparedStatement.setTimestamp(4, new Timestamp(accountVo.getDatetime().getTime()));
preparedStatement.setDouble(5, accountVo.getMoney());
preparedStatement.executeUpdate();
//提交
connection.commit();
//执行成功,返回true
result = true;
} catch (Exception e) {
try {
//发生异常,数据回滚
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
DBUtil.releaseDB(null, preparedStatement, connection);
}
return result;
}
//判断用户是否存在
public boolean isExitAccount(int accountId) {
String sql = "select COUNT(*) AS count from account where accountId =? ";
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
//定义标识符
boolean flag = false;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, accountId);
resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
flag = resultSet.getInt("count") > 0 ? true : false;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
DBUtil.releaseDB(resultSet, preparedStatement, connection);
}
return flag;
}
//转账
public boolean transferAccount(AccountVo accountVo) {
Connection connection = null;
PreparedStatement preparedStatement = null;
//标识符
boolean result = false;
try {
//转账 - 转出账户(转出账户余额减少)
String sql = "update account set account_money = account_money-? where accountId =? ";
connection = DBUtil.getConnection();
//开启事务
connection.setAutoCommit(false);
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setDouble(1, accountVo.getMoney());
preparedStatement.setInt(2, accountVo.getAccountId());
preparedStatement.executeUpdate();
//释放资源
DBUtil.releaseDB(null, preparedStatement, null);
//转账 - 转入账户(转入账户余额增加)
String sql1 = "update account set account_money = account_money +? where accountId =? ";
preparedStatement = connection.prepareStatement(sql1);
preparedStatement.setDouble(1, accountVo.getMoney());
preparedStatement.setInt(2, accountVo.getTransfer_account());
preparedStatement.executeUpdate();
//转账日志操作
String sql2 = "insert into account_log (accountId,transfer_account,type,log_time,money) values (?,?,?,?,?) ";
preparedStatement = connection.prepareStatement(sql2);
preparedStatement.setInt(1, accountVo.getAccountId());
preparedStatement.setInt(2, accountVo.getTransfer_account());
preparedStatement.setString(3, accountVo.getType());
preparedStatement.setTimestamp(4, new Timestamp(accountVo.getDatetime().getTime()));
preparedStatement.setDouble(5, accountVo.getMoney());
preparedStatement.executeUpdate();
//提交失误
connection.commit();
result = true;
} catch (Exception e) {
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
DBUtil.releaseDB(null, preparedStatement, connection);
}
return result;
}
//统计查询 -- 收入统计
public double inMoneyByLog(AccountLog accountLog) {
String sql = "SELECT SUM(money) AS in_money FROM account_log WHERE transfer_account =? AND log_time LIKE ? ";
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
double in_money = 0;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
// 转入账户
preparedStatement.setInt(1, accountLog.getTransfer_account());
// 当前月份
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");
// 月份--当前月
String date=sdf.format(accountLog.getLog_time());
preparedStatement.setString(2, date + "%");
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
in_money = resultSet.getDouble("in_money");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.releaseDB(resultSet, preparedStatement, connection);
}
return in_money;
}
//统计查询 -- 支出统计
public double outMoneyByLog(AccountLog accountLog) {
String sql = "SELECT SUM(money) AS out_money FROM account_log WHERE accountId=? AND type=? AND log_time LIKE ? ";
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
double out_money = 0;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, accountLog.getAccountId());
preparedStatement.setString(2, accountLog.getType());
// 当前月份
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String date = sdf.format(accountLog.getLog_time());
preparedStatement.setString(3, date + "%");
resultSet = preparedStatement.executeQuery();
if (resultSet.next()){
out_money = resultSet.getDouble("out_money");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.releaseDB(resultSet, preparedStatement, connection);
}
return out_money;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
个人生活助手_完整版_Fise19_1.21.zip (51个子文件)
Assistant
bin
com
hpe
dao
IEntertainmentDao.class 276B
IMemorandumDao.class 341B
IUsersDao.class 404B
IAccountDao.class 346B
impl
MemorandumDaoImpl.class 4KB
EntertainmentDaoImpl.class 4KB
AccountDaoImpl.class 6KB
UsersDaoImpl.class 6KB
po
AccountLog.class 2KB
RankingVo.class 1KB
Account.class 1KB
Memorandum.class 2KB
Ranking.class 2KB
Guess.class 1KB
Users.class 3KB
AccountVo.class 1KB
view
MemorandumUI.class 5KB
UsersUI.class 6KB
MainUI.class 2KB
AccountUI.class 5KB
EntertainmentUI.class 5KB
util
DBUtil.class 2KB
db.properties 146B
.settings
org.eclipse.jdt.core.prefs 598B
src
com
hpe
dao
IEntertainmentDao.java 304B
IUsersDao.java 432B
IMemorandumDao.java 509B
IAccountDao.java 564B
impl
MemorandumDaoImpl.java 5KB
EntertainmentDaoImpl.java 3KB
UsersDaoImpl.java 7KB
AccountDaoImpl.java 8KB
po
Account.java 916B
Guess.java 787B
Users.java 2KB
RankingVo.java 679B
AccountLog.java 1014B
Ranking.java 1KB
AccountVo.java 873B
Memorandum.java 1KB
view
EntertainmentUI.java 4KB
MemorandumUI.java 5KB
MainUI.java 1KB
UsersUI.java 6KB
AccountUI.java 5KB
util
DBUtil.java 2KB
db.properties 146B
.project 385B
.classpath 379B
lib
mysql-connector-java-5.1.14-bin.jar 758KB
life_assistant_Fise19_1.21.sql 5KB
共 51 条
- 1
资源评论
- Rodedrktylos2019-10-29不错的一小的后台项目
- jylove12072019-10-22有帮助,非常感谢
fise19
- 粉丝: 16
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功