基于JDBC的账务管理系统(二)https://developer.aliyun.com/article/1433677
数据层:
package cn.yh.dao; import cn.yh.entity.Account; import java.util.List; //3.3 接口;Account的CRUD; public interface AccountDao { //完善存款方法; public int saveMoney(Account a); //增加一个查看所有账户信息的方法; public List<Account> selectAll(); //增加一个方法,根据时间来查询信息的方法; public List<Account> selectByDate(String startTime,String endTime); //里面增加一个查询余额的方法; public double selectBalance(); //根据cardid来查询的方法即可; }
实现类:
package cn.yh.dao; import cn.yh.entity.Account; import cn.yh.util.DruidUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; //3.4创建 接口的实现类; public class AccountDaoImpl implements AccountDao { //类的成员变量;初始的时候,设置为null,在方法调用的时候去赋值,可以节省内存空间 ; Connection conn=null; PreparedStatement pst=null; ResultSet rs=null; //传递的参数在Account对象a里面; @Override public int saveMoney(Account a) { String sql="insert ac_account(sortname,type,money,createtime,description)values(?,?,?,?,?)"; Object[]params={a.getSortname(),a.getType(),a.getMoney(),a.getCreateTime(),a.getDescription()}; return DruidUtil.update(sql,params); } //实现这个查看所有信息的方法; @Override public List<Account> selectAll() { //获取链接; conn= DruidUtil.getConnection(); List<Account>accountList=null; //语句对象; try { pst=conn.prepareStatement("select * from ac_account"); rs=pst.executeQuery(); accountList=new ArrayList<>(); //创建实例; //list:里面存放的是Account的集合;每个Account对象 while(rs.next()){ Account a=new Account(); //创建对象 ,下面几行是赋值; a.setId(rs.getInt("id")); a.setSortname(rs.getString("typeName")); a.setType(rs.getString("type")); a.setMoney(rs.getDouble("money")); a.setCreateTime(rs.getDate("createTime")); a.setDescription(rs.getString("description")); accountList.add(a); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { DruidUtil.close(rs,pst,conn); } return accountList; } @Override public List<Account> selectByDate(String startTime, String endTime) { conn=DruidUtil.getConnection(); List<Account> accountList=null; try { pst=conn.prepareStatement("select * from ac_account where createTime between ? and ?"); //复习sql //需要赋值给? pst.setString(1,startTime); pst.setString(2,endTime); rs=pst.executeQuery(); //结果集对象获取; accountList=new ArrayList<>(); //作用域,在try{}有效; 100万亿津巴布韦币; Account a=null; while(rs.next()){ a=new Account(); a.setId(rs.getInt("id")); a.setSortname(rs.getString("typeName")); a.setType(rs.getString("type")); a.setMoney(rs.getDouble("money")); a.setCreateTime(rs.getDate("createTime")); a.setDescription(rs.getString("description")); //添加到集合; accountList.add(a); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { DruidUtil.close(rs,pst,conn); } return accountList; } /* 后续如果要扩充,根据cardid,来余额 selectBalance(String cardid){} select sum(money) from ac_account group by cardid */ @Override public double selectBalance() { String sql="select sum(money) from ac_account"; conn=DruidUtil.getConnection(); double result=0.0; try { pst=conn.prepareStatement(sql); rs = pst.executeQuery(); //只查询一条数据;单行单列; if(rs.next()){ result =rs.getDouble(1); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { DruidUtil.close(rs,pst,conn); } return result; } }
UserDao接口
package cn.yh.dao; import cn.yh.entity.User; //3.创建接口:针对User表的操作;CRUD public interface UserDao { //3.3.1第一个方法,是查询;User user;参数就是刚才的用户名和密码; public User selectUser(String username,String password); }
实现类:
package cn.yh.dao; import cn.yh.entity.User; import cn.yh.util.DruidUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; //3.2 UserDao的实现类;这里暂时不考虑,用户名和密码,重复; public class UserDaoImpl implements UserDao{ //让三个接口对象为成员变量,可以在finally访问; Connection conn=null; PreparedStatement pst=null; ResultSet rs=null; @Override public User selectUser(String username, String password) { User user=null; String sql="select * from ac_user where username=? and password=?"; try { conn= DruidUtil.getConnection(); // pst= conn.prepareStatement(sql); pst.setString(1,username); pst.setString(2,password); rs= pst.executeQuery(); if(rs.next()){ user=new User(); user.setId(rs.getInt("id")); user.setUserName(rs.getString("username")); user.setPassword(rs.getString("password")); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { DruidUtil.close(rs,pst,conn); } return user; } }
618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华
社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多
个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接 IT BOOK
多得(或扫描京东二维码)查看详情吧!