记账本,C,Github,Dao

时间:2024-04-18 08:17:45
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import entity.Category;
import util.DBUtil; /**
* catebory表的ORM映射
*
* @author 于修彦
*
*/
public class CategoryDAO { public int getTotal() {
int total = 0;
try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select count(*) from category"; ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
total = rs.getInt(1);
} } catch (SQLException e) { e.printStackTrace();
}
return total;
} public void add(Category category) { String sql = "insert into category(name) values(?)";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setString(1, category.getName()); ps.execute(); ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
category.setId(rs.getInt(1));
}
} catch (SQLException e) { e.printStackTrace();
}
} public void update(Category category) { String sql = "update category set name= ? where id = ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setString(1, category.getName());
ps.setInt(2, category.getId()); ps.execute(); } catch (SQLException e) { e.printStackTrace();
} } public void delete(int id) { try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "delete from category where id = " + id; s.execute(sql); } catch (SQLException e) { e.printStackTrace();
}
} public Category get(int id) {
Category category = null; try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select * from category where id = " + id; ResultSet rs = s.executeQuery(sql); if (rs.next()) {
category = new Category();
String name = rs.getString(2);
category.setName(name);
category.setId(id);
} } catch (SQLException e) { e.printStackTrace();
}
return category;
} public List<Category> list() {
return list(0, Short.MAX_VALUE);
} public List<Category> list(int start, int count) {
List<Category> categorys = new ArrayList<Category>(); String sql = "select * from category order by id desc limit ?,? "; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Category category = new Category();
int id = rs.getInt(1);
String name = rs.getString(2);
category.setId(id);
category.setName(name);
categorys.add(category);
}
} catch (SQLException e) { e.printStackTrace();
}
return categorys;
} }

dao1

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import entity.Config;
import util.DBUtil; /**
* 专门用于把Config实例与Config表进行ORM映射
*
* @author 于修彦
*
*/
public class ConfigDAO {
/**
* 获取总数
*
* @return
*/
public int getTotal() {
int total = 0;
String sql = "select count(*) from config";
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return total;
} /**
* 添加配置
*
* @param config
* 配置信息
* @return 成功返回true,失败返回false
*/
public boolean add(Config config) {
String sql = "insert into config(myKey,myValue) values(?,?)";
boolean flag = false;
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setString(1, config.getMyKey());
ps.setString(2, config.getMyValue());
flag = ps.execute();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
config.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 删除配置信息
*
* @param config
* 配置
* @return 成功返回true,失败返回false
*/
public boolean delete(Config config) {
String sql = "delete from config where id = ?";
boolean flag = false;
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setInt(1, config.getId());
flag = ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 更新配置信息
*
* @param config
* 配置信息
* @return 成功返回true,失败返回false
*/
public boolean update(Config config) {
boolean flag = false;
String sql = "update config set myKey=?,myValue=? where id=?";
Connection conn = DBUtil.getConn();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, config.getMyKey());
ps.setString(2, config.getMyValue());
ps.setInt(3, config.getId());
flag = ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 通过id获取config实例
*
* @param id
* @return config实例
*/
public Config get(int id) {
Config config = null;
String sql = "select * from config where id=?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery(); if (rs.next()) {
config = new Config();
config.setId(id);
config.setMyKey(rs.getString("myKey"));
config.setMyValue(rs.getString("myValue"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return config;
} /**
* 用于分页查询
*
* @param start
* 开始id
* @param count
* 每页条数
* @return config的列表
*/
public List<Config> list(int start, int count) {
List<Config> configs = new ArrayList<Config>();
String sql = "select * from config order by id desc limit ?,?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs = ps.executeQuery(); while (rs.next()) {
Config config = new Config();
config.setId(rs.getInt("id"));
config.setMyKey(rs.getString("myKey"));
config.setMyValue(rs.getString("myValue")); configs.add(config);
}
} catch (SQLException e) {
e.printStackTrace();
}
return configs;
} /**
* 获取
*
* @return
*/
public List<Config> list() {
return list(0,Short.MAX_VALUE);
} /**
* 通过键获取Config实例,比如预算对应的Config实例,就会通过这种方式获取: new
* ConfigDAO().getByKey("budget");
*
* @param key
* @return config实例
*/
public Config getByKey(String key) {
Config config = null;
String sql = "select * from config where myKey=?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setString(1, key);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
config = new Config();
config.setId(rs.getInt("id"));
config.setMyKey(key);
config.setMyValue(rs.getString("myValue"));
}
} catch (SQLException e) {
e.printStackTrace();
} return config;
} }

dao2

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import entity.Record;
import util.DBUtil;
import util.DateUtil; /**
* record表的映射
*
* @author 于修彦
*
*/
public class RecordDAO {
/**
* 获取总数
*
* @return 记录条数
*/
public int getTotal() {
int total = 0;
try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select count(*) from record"; ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) { e.printStackTrace();
}
return total;
} /**
* 增加记录
*
* @param record
*/
public void add(Record record) { String sql = "insert into record values(null,?,?,?,?)";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, record.getSpend());
ps.setInt(2, record.getCid());
ps.setString(3, record.getComment());
ps.setDate(4, DateUtil.util2sql(record.getMyDate())); ps.execute(); ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
record.setId(id);
}
} catch (SQLException e) { e.printStackTrace();
}
} /**
* 更新记录
*
* @param record
*/
public void update(Record record) { String sql = "update record set spend= ?, cid= ?, comment =?, myDate = ? where id = ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, record.getSpend());
ps.setInt(2, record.getCid());
ps.setString(3, record.getComment());
ps.setDate(4, DateUtil.util2sql(record.getMyDate()));
ps.setInt(5, record.getId()); ps.execute(); } catch (SQLException e) { e.printStackTrace();
} } /**
* 删除记录
*
* @param id
*/
public void delete(int id) { try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "delete from record where id = " + id; s.execute(sql); } catch (SQLException e) { e.printStackTrace();
}
} /**
* 根据id获取记录
*
* @param id
* @return record实例
*/
public Record get(int id) {
Record record = null; try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select * from record where id = " + id; ResultSet rs = s.executeQuery(sql); if (rs.next()) {
record = new Record();
int spend = rs.getInt("spend");
int cid = rs.getInt("cid");
String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
} } catch (SQLException e) { e.printStackTrace();
}
return record;
} /**
* 获取所有记录
*
* @return
*/
public List<Record> list() {
return list(0, Short.MAX_VALUE);
} /**
* 用于分页查询
*
* @param start
* @param count
* @return
*/
public List<Record> list(int start, int count) {
List<Record> records = new ArrayList<Record>(); String sql = "select * from record order by id desc limit ?,? "; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int spend = rs.getInt("spend");
int cid = rs.getInt("cid"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取某一项分类的记录列表
*
* @param cid
* @return
*/
public List<Record> list(int cid) {
List<Record> records = new ArrayList<Record>(); String sql = "select * from record where cid = ?"; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, cid); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取今天的消费记录列表
*
* @return
*/
public List<Record> listToday() {
return list(DateUtil.getToday());
} /**
* 根据日期获取某一天的消费记录列表
*
* @param day
* @return
*/
public List<Record> list(Date day) {
List<Record> records = new ArrayList<Record>();
String sql = "select * from record where myDate =?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setDate(1, DateUtil.util2sql(day)); ResultSet rs = ps.executeQuery();
while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int cid = rs.getInt("cid");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取本月份消费记录
*
* @return
*/
public List<Record> listThisMonth() {
return list(DateUtil.getMonthBegin(), DateUtil.getMonthEnd());
} /**
* 获取从开始日期到结束日期的消费记录
*
* @param start
* @param end
* @return
*/
public List<Record> list(Date start, Date end) {
List<Record> records = new ArrayList<Record>();
String sql = "select * from record where myDate >=? and myDate <= ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setDate(1, DateUtil.util2sql(start));
ps.setDate(2, DateUtil.util2sql(end));
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int cid = rs.getInt("cid");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} }

dao3