AccountDAO.java

package com.aff.bookstore.dao;
import com.aff.bookstore.domain.Account;
public interface AccountDAO { /**
* 根据 accountId 获取对应的 Account 对象
* @param accountId
* @return
*/
public abstract Account get(Integer accountId); /**
* 根据传入的 accountId, amount 更新指定账户的余额: 扣除 amount 指定的钱数
* @param accountId
* @param amount
*/
public abstract void updateBalance(Integer accountId, float amount); }

AccountDAOImpl.java

package com.aff.bookstore.dao.impl;

import com.aff.bookstore.dao.AccountDAO;
import com.aff.bookstore.domain.Account; public class AccountDAOImpl extends BaseDAO<Account> implements AccountDAO { @Override
public Account get(Integer accountId) {
String sql = "select accountId,balance from account where accountId = ?";
return query(sql, accountId); } @Override
public void updateBalance(Integer accountId, float amount) {
String sql = "update account set balance = balance - ? where accountId = ?";
update(sql, amount, accountId);
} }

TradeDAO.java

package com.aff.bookstore.dao;
import java.util.Set;
import com.aff.bookstore.domain.Trade;
public interface TradeDAO { /**
* 向数据表中插入 Trade 对象
* @param trade
*/
public abstract void insert(Trade trade); /**
* 根据 userId 获取和其关联的 Trade 的集合
* @param userId
* @return
*/
public abstract Set<Trade> getTradesWithUserId(Integer userId); }

TradeDAOImpl.java

package com.aff.bookstore.dao.impl;
import java.util.HashSet;
import java.util.Set;
import com.aff.bookstore.dao.TradeDAO;
import com.aff.bookstore.domain.Trade; public class TradeDAOImpl extends BaseDAO<Trade> implements TradeDAO { @Override
public void insert(Trade trade) {
String sql = "insert into trade(userid,tradetime) values(?,?)";
update(sql, trade.getUserId(),trade.getTradeTime());
} @Override
public Set<Trade> getTradesWithUserId(Integer userId) {
String sql = "select tradeId,userId, tradeTime from trade where userId = ?";
return new HashSet<>(queryForList(sql, userId));
} }

TradeItemDAO.java

package com.aff.bookstore.dao;
import java.util.Collection;
import java.util.Set;
import com.aff.bookstore.domain.TradeItem; public interface TradeItemDAO { /**
* 批量保存 TradeItem 对象
* @param items
*/
public abstract void batchSave(Collection<TradeItem> items); /**
* 根据 tradeId 获取和其关联的 TradeItem 的集合
* @param tradeId
* @return
*/
public abstract Set<TradeItem> getTradeItemsWithTradeId(Integer tradeId); }

TradeItemDAOImpl.java

package com.aff.bookstore.dao.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.aff.bookstore.dao.TradeItemDAO;
import com.aff.bookstore.domain.TradeItem; public class TradeItemDAOImpl extends BaseDAO<TradeItem> implements TradeItemDAO { @Override
public void batchSave(Collection<TradeItem> items) {
String sql = "insert into tradeitem(bookid, quantity,tradeid) values(?,?,?)";
Object[][] params = new Object[items.size()][3]; List<TradeItem> tradeItems = new ArrayList<TradeItem>(items);
for (int i = 0; i < tradeItems.size(); i++) {
params[i][0] = tradeItems.get(i).getBookId();
params[i][1] = tradeItems.get(i).getQuantity();
params[i][2] = tradeItems.get(i).getTradeId(); }
batch(sql, params);
} @Override
public Set<TradeItem> getTradeItemsWithTradeId(Integer tradeId) {
String sql = "select itemId tradeItemId, bookId,quantity,tradeId from tradeitem where tradeid = ?";
return new HashSet<>(queryForList(sql, tradeId));
} }

(七)剩余DAO代码的更多相关文章

  1. 第七章 DAO模式

    第七章 DAO模式 一.JDBC的封装 1.JDBC的封装: DAO位于业务逻辑和持久化数据之间,实现对持久化数据的访问.将数据库都封装起来,对外提供相应的接口 2.DAO模式的作用: 1.隔离业务逻 ...

  2. 使用greenDAO生成DAO代码

    研究greenDAO有几天了,刚开始看别人的博客基本都把我带到了沟里,讲gradle把简单的问题搞得非常复杂,而且都是抄来抄去,看来看去也就那么几篇,实在看不下去了,只得硬着头皮自己琢磨,好在终于把这 ...

  3. Mybatis使用Dao代码方式CURD

    Mybatis 使用Dao代码方式进行增.删.改.查. 1.Maven的pom.xml <project xmlns="http://maven.apache.org/POM/4.0. ...

  4. js刷新框架子页面的七种方法代码

    面以三个页面分别命名为framedemo.html,top.html,button.html为例来具体说明如何做.其中framedemo.html由上下两个页面组成,代码如下: <!DOCTYP ...

  5. mybatis-generator-core自动生成do、mapping、dao 代码

    使用mybatis配置映射文件,有点麻烦,容易出错,可以使用jar工具自动生成代码,即高效又方便 一.下载两个jar,并放置在G:\tool\maven\generator目录下(自己定义) myba ...

  6. mybatis自定义代码生成器(Generator)——自动生成model&dao代码

    花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...

  7. Spring Boot (七)MyBatis代码自动生成和辅助插件

    一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...

  8. Java代码自动生成,生成前端vue+后端controller、service、dao代码,根据表名自动生成增删改查功能

    本项目地址:https://github.com/OceanBBBBbb/ocean-code-generator 项目简介 ocean-code-generator采用(适用):     ,并使用m ...

  9. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

随机推荐

  1. mock-server 之 mock 接口测试

    1.mock 介绍 mock 除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供 API 接口,此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己 moc ...

  2. 关于C primer plus 的学习计划(暂停)

    最近想学数据结构,但是C的基础不够好,想借着C primer plus补一下基础.怎料第一章看的还挺快,到第二章看了二十多天.现在改改阅读方式:每日在这里添加进度,然后精看例题习题和章总结,其它简略看 ...

  3. Java——抽象类与接口的前世今生

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...

  4. High Card Low Card G(田忌赛马进阶!!)

    传送门 \(首先一定要明确一个观点,不然会完全没有思路\) \(\bullet\)\(由于前半段大的更优,后半段小的更优.\) \(\bullet\)\(所以,\)Bessie\(一定会在前(n/2) ...

  5. Qt之xml文件解析

    XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...

  6. Day_08【面向对象】扩展案例2_测试旧手机新手机类,并给新手机实现玩游戏功能

    分析以下需求,并用代码实现 1.定义手机类 行为: 打电话,发短信 2.定义接口IPlay 行为: 玩游戏 3.定义旧手机类继承手机类 行为: 继承父类的行为 4.定义新手机继承手机类实现IPlay接 ...

  7. CF-234 F. Fence DP

    F. Fence 这个刷Fence的问题看到好几个了... 题意 有一个栅栏,由n块宽为1cm的木板组成,第i块木板高为hi,要给他们刷上油漆,有一桶红色的可以刷a平方厘米的油漆,一桶绿色的可以刷b平 ...

  8. Python 简明教程 --- 0,前言

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io Life is short, you need Python! -- Bruce Eckel 0,关 ...

  9. python之unittest验证函数功能

    一.待验证脚本 首先,有如下三个脚本,分别对应三个函数 分别导入模块行,如下: from fuction1 import fu1 from fuction2 import fu2 from fucti ...

  10. linux --开机自动挂载硬盘【转】

    转:http://c.biancheng.net/view/900.html 了解了 mount 命令之后,读者可能会问,系统如何在开机时自动挂载硬盘,它又是怎么知道哪些分区是需要挂载的呢? 很简单, ...