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. linux命令之df dh

    df -h, --human-readable 查看磁盘空间占用情况 df -h du -h, --human-readable -s, --summarize 查看文件大小 du -h test.t ...

  2. python:入门

    基础学习路线 解释器 什么是解释器? 下载解释器 下载链接 安装解释器 PyCharm 什么是PyCharm? 下载安装 下载链接 参考:1 注意:选择社区版 PyCharm的基本操作 1.创建项目 ...

  3. Phoenix and Distribution(字典序贪心)

    \(给定一串字母,分成k份,使得最大字典序最小.(字母可以任意组合)\) \(------------------------------issue~------------------------\ ...

  4. P2432 zxbsmk爱查错

    描述:https://www.luogu.com.cn/problem/P2432 给你一个主串以及若干个子串,求最少需要删除几个字母,使得主串能由一些子串组成. dp [ i ] 表示前 i 个字符 ...

  5. 自定义比较器(IComparer接口的实现)

    class FileNameSort : IComparer { [System.Runtime.InteropServices.DllImport("Shlwapi.dll", ...

  6. 03_CSS入门和高级技巧(1)

    上节课知识的复习 插入图片,页面中能够插入的图片类型:jpg.jpeg.bmp.png.gif:不能的psd.fw. 语法: <img src="路径" alt=" ...

  7. Azkaban无法连接网页

    出的问题如下图 首先我查看日志看到有一个 [ERROR] 2020/03/13 11:12:34.417 +0800 ERROR [PluginCheckerAndActionsLoader] [Az ...

  8. 如何构建一个arm64 AArch64的Ubuntu rootfs

    文章目录 1 下载文件创建rootfs文件夹 2 安装qemu-user-static搭建arm64模拟环境 3 chroot 到 模拟arm64的文件系统下 4 安装基础的软件包 5 系统基础的修改 ...

  9. Tomcat服务器的下载与安装,修改端口号

    安装及简单配置Tomcat服务器: 1.登录www.apache.org 网站,之后点击Projects , 点击Project List,找到Tomcat. 2.点击Tomcat之后,之后进入Tom ...

  10. Git使用教程之SSH连接方式配置(二)

    什么是GitHub?这个网站就是提供Git仓库托管服务的. 什么是SSH Key?你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,大白话理解就是这两个仓库如果要进行远程同步,则我们需 ...