|
|
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]);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
*/
|
|
|
} |