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. python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...

  2. asyncio异步编程【含视频教程】

    不知道你是否发现,身边聊异步的人越来越多了,比如:FastAPI.Tornado.Sanic.Django 3.aiohttp等. 听说异步如何如何牛逼?性能如何吊炸天....但他到底是咋回事呢? 本 ...

  3. Dubbo(七):redis注册中心的应用

    上篇我们讲了Dubbo中有一个非常本质和重要的功能,那就是服务的自动注册与发现,而这个功能是通过注册中心来实现的.上篇中使用zookeeper实现了注册中心的功能,同时了提了dubbo中有其他许多的注 ...

  4. Markdown更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中,插入表格等方法

    Markdown 通过简单标记语法,使普通文本内容具有一定格式.但它本身不支持修改字体.字号与颜色等功能的. 一.更改字体大小.颜色.更改字体 Markdown语法 <font face=&qu ...

  5. PHP循环引用会遇到的坑

    今天遇到这样一个问题: 如果foreach循环一个数组,引用去对它的元素做一些操作,会有什么问题吗? 比如 [1, 2, 3],foreach循环的时候,引用给每个元素 * 2,再去foreach输出 ...

  6. 深入理解CSS定位—浮动模型

    前面我们讲到了绝对定位,在这篇文章中,我们将讲到3种定位模型中的浮动模型.主要参考 张鑫旭在慕课网的 深入理解float 那些年我们一起清过的浮动---by 一丝丝凉 精通CSS 注意:第二小节基本参 ...

  7. [hdu5534]DP

    题目原意:给一棵n个点的树添加边,给定度函数f(d)为一个点的度的函数,求所有点的度函数的和 思路: 函数只与点的度有关,而与点无关,n个点的树有n-1条边,共产生2(n-1)个度,每个点至少有1个度 ...

  8. Spring全家桶之spring boot(二)

    spring boot的两种配置文件: 虽然spring boot可以帮助我们进行一些配置项,但是有些内容还是需要开发者自己进行配置,因此spring boot提供了配置文件以供开发者配置.sprin ...

  9. app测试、web测试-怎么测?

    app测试 前言 看过许多大神对APP测试的理解,博主总结了一下我们平时测试APP应该注意的一些测试点并结合大神的理解,总结出这篇文章. 一.测试周期 测试周期一般为两周,根据项目情况以及版本质量可适 ...

  10. 接口(API)测试理念

    什么是接口测试 接口测试就是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性: 测试的重点是检查数据交互.传递.和控制管理过程以及系统间的相互 ...