You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
test/Supermarket/lib/dao/impl/prodCatalogImpl.java

252 lines
7.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.lingnan.supermarket.dao.impl;
import java.io.StreamCorruptedException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Vector;
import com.lingnan.supermarket.dao.prodCatalogService;
import com.lingnan.supermarket.dto.ProdCatalog;
import com.lingnan.supermarket.utils.JDBCUtil;
// 实现prodCatalogService接口--用于处理商品目录相关的数据持久化操作
public class prodCatalogImpl implements prodCatalogService {
// 将商品目录表和商品表联合查询,获取商品目录及相关商品信息
@Override
public Vector<ProdCatalog> findProdCatalogAndProd() {
// 通过JDBCUtil工具类来获取已经配置好的连接对象
Connection conn = JDBCUtil.getConn();
// 创建一个Vector容器存放查询到的ProdCatalog对象
Vector<ProdCatalog> v = new Vector<ProdCatalog>();
ProdCatalog prodCatalog;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
// 通过预编译语句准备调用存储过程allProdCatalog
pstmt = conn.prepareStatement("call allProdCatalog()");
// 执行查询操作
resultSet = pstmt.executeQuery();
// 遍历结果集将每一条记录封装成ProdCatalog对象并添加到Vector容器中
while (resultSet.next()) {
prodCatalog = new ProdCatalog();
// 设置ProdCatalog对象的id属性
prodCatalog.setId(resultSet.getString("id"));
// 设置ProdCatalog对象的name属性
prodCatalog.setName(resultSet.getString("name"));
v.add(prodCatalog);
}
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 通过JDBCUtil工具类提供的方法进行关闭操作
JDBCUtil.close(resultSet, pstmt, conn);
}
return v;
}
// 根据给定的id1查找商品目录名称
@Override
public String findProdCatalog(String id1) {
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
String catalog = null;
try {
// 预编译SQL语句用于根据给定的id2查询prodCatalog表中的记录
pstmt = conn.prepareStatement("select *from prodCatalog where id2 =?");
// 设置SQL语句中的参数将传入的id1赋值给查询语句中的占位符
pstmt.setString(1, id1);
// 执行查询操作
resultSet = pstmt.executeQuery();
// 如果结果集中有下一条记录则获取对应记录中的name1字段值作为商品目录名称
if (resultSet.next()) {
catalog = resultSet.getString("name1");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return catalog;
}
// 向商品目录表prodCatalog中添加一条记录
@Override
public int addProdCatalog(String id1, String id2) {
int flag = 0;
String name1 = null;
// 根据传入的id1判断商品类别名称01对应食品02对应电器03对应生活用品04对应其他
if (id1.equals("01"))
name1 = "食品";
else if (id1.equals("02"))
name1 = "电器";
else if (id1.equals("03"))
name1 = "生活用品";
else
name1 = "其他";
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
// 预编译插入数据的SQL语句向prodCatalog表中插入三条数据
pstmt = conn.prepareStatement("insert into prodCatalog values(?,?,?)");
// 设置SQL语句中的第一个参数
pstmt.setString(1, id1);
// 设置SQL语句中的第二个参数
pstmt.setString(2, name1);
// 设置SQL语句中的第三个参数
pstmt.setString(3, id2);
// 执行插入操作若插入成功将flag置为1表示添加成功
pstmt.executeUpdate();
flag = 1;
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return flag;
}
// 根据给定的id2删除商品目录表prodCatalog中的一条记录
@Override
public int deleteProdCatalog(String id2) {
int flag = 0;
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
// 预编译删除数据的SQL语句根据传入的id2作为条件从prodCatalog表中删除对应的记录
pstmt = conn.prepareStatement("delete from prodCatalog where id2=?");
// 设置SQL语句中的参数将传入的id2赋值给查询语句中的占位符?
pstmt.setString(1, id2);
// 执行删除操作若删除成功将flag置为1表示删除成功
pstmt.executeUpdate();
flag = 1;
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return flag;
}
// 根据商品类production的name查询并输出类别id如果传入的name为"全部"则直接返回默认的catalogid "0"
@Override
public String findProdCatalogByname(String name) {
Connection conn = JDBCUtil.getConn();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
String catalogid = "0";
try {
// 如果传入的商品名称为"全部"则直接返回默认的catalogid
if (name.equals("全部")) {
return catalogid;
}
// 预编译SQL语句用于根据给定的商品名称查询prodCatalog表中的记录获取对应的类别id
pstmt = conn.prepareStatement("select * from prodCatalog where name =?");
// 设置SQL语句中的参数将传入的name赋值给查询语句中的占位符
pstmt.setString(1, name);
// 执行查询操作,获取结果集
resultSet = pstmt.executeQuery();
// 如果结果集中有下一条记录则获取对应记录中的id字段值作为类别id
if (resultSet.next()) {
catalogid = resultSet.getString("id");
}
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return catalogid;
}
/*
public static void main(String[] args) {
ProdCatalog p = new ProdCatalog();
prodCatalogImpl pi = new prodCatalogImpl();
p.setName("全部");
System.out.println(pi.findProdCatalogByname(p.getName()));
}
*/
// 查询商品目录表prodCatalog中的所有商品类别名称并添加"全部"作为第一个元素后返回
@Override
public ArrayList<String> findNameProdCatalog() {
Connection conn = JDBCUtil.getConn();
ArrayList<String> v = new ArrayList<String>();
// 先添加"全部"作为默认的第一个类别名称
v.add("全部");
ProdCatalog prodCatalog;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
// 预编译查询所有记录的SQL语句用于获取prodCatalog表中的所有商品类别名称
pstmt = conn.prepareStatement("select * from prodCatalog");
// 执行查询操作
resultSet = pstmt.executeQuery();
// 遍历结果集将每条记录中的商品类别名称添加到ArrayList容器中
while (resultSet.next()) {
v.add(resultSet.getString("name"));
}
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return v;
}
/*
public static void main(String[] args) {
prodCatalogImpl pi = new prodCatalogImpl();
ArrayList<String> log = null;
log = pi.findNameProdCatalog();
String[] s = new String[log.size()];
for (int i = 0; i < log.size(); i++) {
s[i] = log.get(i);
System.out.println(log.get(i));
}
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
}
*/
}