(七)剩余DAO代码
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代码的更多相关文章
- 第七章 DAO模式
第七章 DAO模式 一.JDBC的封装 1.JDBC的封装: DAO位于业务逻辑和持久化数据之间,实现对持久化数据的访问.将数据库都封装起来,对外提供相应的接口 2.DAO模式的作用: 1.隔离业务逻 ...
- 使用greenDAO生成DAO代码
研究greenDAO有几天了,刚开始看别人的博客基本都把我带到了沟里,讲gradle把简单的问题搞得非常复杂,而且都是抄来抄去,看来看去也就那么几篇,实在看不下去了,只得硬着头皮自己琢磨,好在终于把这 ...
- Mybatis使用Dao代码方式CURD
Mybatis 使用Dao代码方式进行增.删.改.查. 1.Maven的pom.xml <project xmlns="http://maven.apache.org/POM/4.0. ...
- js刷新框架子页面的七种方法代码
面以三个页面分别命名为framedemo.html,top.html,button.html为例来具体说明如何做.其中framedemo.html由上下两个页面组成,代码如下: <!DOCTYP ...
- mybatis-generator-core自动生成do、mapping、dao 代码
使用mybatis配置映射文件,有点麻烦,容易出错,可以使用jar工具自动生成代码,即高效又方便 一.下载两个jar,并放置在G:\tool\maven\generator目录下(自己定义) myba ...
- mybatis自定义代码生成器(Generator)——自动生成model&dao代码
花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...
- Spring Boot (七)MyBatis代码自动生成和辅助插件
一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...
- Java代码自动生成,生成前端vue+后端controller、service、dao代码,根据表名自动生成增删改查功能
本项目地址:https://github.com/OceanBBBBbb/ocean-code-generator 项目简介 ocean-code-generator采用(适用): ,并使用m ...
- 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)
让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett 译文出处:linux中国-Hank Chow 检查你的代码的质 ...
随机推荐
- 多源最短路径算法:Floyd算法
前言 由于本人太菜,这里不讨论Floyd的正确性. 简介 多源最短路径,解决的是求从图中任意两点之间的最短路径的问题. 分析 代码短小精悍,主要代码只有四行,直接放上: for(int k=1;k&l ...
- matlab-均值滤波
均值滤波 主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度.有效抑制加性噪声.缺点:容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理. 均值滤波器的缺点是存在着边缘模 ...
- nginx代理vue项目
很多项目的前端都使用vue编写的,在项目上线部署的时候,有些项目要求把前端页面和后台服务部署在不同的服务器,这就要求使用nginx代理,本文就来讲讲vue项目怎么使用nginx代理. 项目github ...
- 学习vue第五节,vue中使用class和style的css样式
vue中使用class样式 数组 <h1 :class="['red', 'thin']">这是一个H1</h1> 数组中使用三元表达式 <h1 :c ...
- 支付宝小程序云开发serverless----获取用户的user_id
支付宝小程序云开发serverless----获取用户的user_id 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 开通云调 ...
- Node 内存泄漏排查案例
背景 在阿里云上看到我运行了一段时间的程序,发现 memory 一项基本是在稳步提升,就知道有内存泄漏的情况出现.如下图 近三日从 35% 升到 40%,缓慢而坚定的提升. 代码 排查此问题需要分析其 ...
- BufferedInputStream:字节缓冲输入流
package com.itheima.demo01.BufferedStream; import java.io.BufferedInputStream; import java.io.FileIn ...
- vue相关环境搭建一条龙
前言 如题,基于很多朋友对于环境配置及搭建存在疑问或者不熟悉的情况,因此整理一篇完整的环境搭建说明,在此默认各位到手的电脑是需要从0开始配置环境. nvm的安装 很多同学过去可能安装node都是直接 ...
- Mysql 常用函数(7)- length 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html length 的作用 返回字符串的字节长度 注意: ...
- 一、线程 & 线程池
一.线程的介绍 1.1.概念 进程: 你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这是一个程序,这个程序是一个静态的概念,它被扔在硬盘上也没人理他,但是当你双击它,弹出一个界面输入账号密码登录 ...