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

记账本,C,Github,Dao的更多相关文章

  1. 家庭记账本之Github账号注册与安装(二)

    好多程序猿都在使用github用来存放自己的代码:但是如果仅仅用github的web版本的话:有一些功能还是需要使用git客户端工具才能操作的: 那么今天将指导大家如何安装GitHub for win ...

  2. 家庭记账本之GitHub账号注册与安装(一)

    账号注册 1.github是世纪上最大的开源代码托管网站.因为是国外网站,很多人在注册的时候因为不熟悉英语而犯了难. 2.百度搜索github进入官网.如果你已经有账号密码,那么点击右上角的sign ...

  3. 安卓开发实战-记账本APP(六)

    记账本APP开发---终结篇 昨天的动态数字录屏奉上:在抖音上拍了一个(ps:欢迎点赞) https://v.douyin.com/poEjmG/ 今天将图表的内容进行了制作,我用的是MPChart的 ...

  4. 家庭版记账本app开发完成

    经过这几天关于android的相关学习,对于家庭版记账本app以及开发结束. 实现的功能为:用户的注册.登录.添加支出账单.添加收入账单.显示所有的该用户的账单情况(收入和支出).生产图表(直观的显示 ...

  5. 记账本NABCD分析

    学生记账本NABCD分析 N(Need,需求) 随着我们进入大学开始逐步的扩大自己的消费水平,而我们每天无法准确的记住一笔一笔的消费记录.常常,每一个月末时我们在宿舍楼道听到不少学生抱怨这个月怎么花钱 ...

  6. 记账本APP(2)

    今天下载了Hbuiler,生成了一个记账本APP,目前里面只可以 输入今日消费 明天将会做出来记录以及计算总额于月消费.

  7. 简单记账本APP开发一

    在对Android的一些基础的知识有了一定了解,以及对于AndroidStudio的如何使用有了 一定的熟悉后,决定做一个简单的记账本APP 开发流程 1.记账本的页面 2.可以添加新的账目 (一)页 ...

  8. Android开发实战——记账本(2)

    开发日志(2)——Bean目录以及数据库 首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上.那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多.bean目录有三个变量事件. ...

  9. 进度1_家庭记账本App

    今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...

随机推荐

  1. ubuntu pip install MySQL-python mysql_config not found

    在安装 mysql-python时,会出现: sh: mysql_config: not found Traceback (most recent call last):   File "s ...

  2. 基于python的发送邮件案例

    #coding:utf-8 #强制使用utf-8编码格式 import smtplib #加载smtplib模块 from email.mime.text import MIMEText from e ...

  3. 软件工程 week 05

    关于 石墨文档客户端 的案例分析 作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 一.调研测评 测试平台:Windows 1 ...

  4. alpha冲刺(6/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 撰写博客 召集大家分析了一下后续的问题 问题困扰: 工程量太大,这周考试又很多,周末我让 ...

  5. 2018.4.26 lvm

    lvm(Logical Volume Manager)逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制. 基本概念: 1. 物理卷-----PV(Physical Volume)物理卷在逻辑 ...

  6. HTTP 各状态码大全

    基本涵盖了所有问题 HTTP 400 – 请求无效 HTTP 401.1 – 未授权:登录失败 HTTP 401.2 – 未授权:服务器配置问题导致登录失败 HTTP 401.3 – ACL 禁止访问 ...

  7. 无状态http协议上用户的身份认证

    1.注册时可以使用手机短信验证码进行身份认证 2.用户每次请求不能每次都发送验证码,这时需要服务器给客户端颁发一个身份凭证(一般为一个唯一的随机数),用户每次请求时都携带身份凭证, 服务器会记录该身份 ...

  8. Docker三大核心概念及DockerToolBox安装

    一.核心概念 Docker大部分操作都围绕三大概念——镜像.容器和仓库展开. 1.Docker镜像 Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板.镜像是创建Docker容器的基础. ...

  9. 2、初探 ZooKeeper 技术内幕

    分布式一致性 “分布式” 是大型系统实现高性能.高可用所常用的架构手段,本章节将概述 “分布式一致性”的基本内容,以作为 ZAB 算法阐述的基础. 分布式一致性的基本概念 数据库系统的基础理论中,“事 ...

  10. ARM920T的Cache

    转载自:http://www.eefocus.com/mcu-dsp/242034 ARM920T有16K的数据Cache和16K的指令Cache,这两个Cache是基本相同的,数据Cache多了一些 ...