OrderDao实现查询操作及异常处理

需积分: 5 0 下载量 79 浏览量 更新于2024-08-05 收藏 3KB TXT 举报
在Java编程中, "OrderDao.txt" 文件是一个包含数据库操作逻辑的Java类, 定义在 "com.order" 包下。这个名为 `OrderDao` 的类继承自一个基础DAO(Data Access Object)类, 常用于处理与数据库交互的任务, 特别是与 "tb_order" 表相关的信息获取。 1. **数据库查询方法**: 类中的 `chaxun()` 方法是一个主要的操作, 它执行SQL查询语句 "select * from tb_order",目的是获取tb_order表中的所有列。这通常用于检索订单数据,如订单ID (id), 订单名称 (name), 价格 (price), 订单ID (orderId) 和描述信息 (descinfo)。 2. **异常处理**: 在尝试执行SQL查询时, 使用了try-catch块来捕获可能出现的SQLException。如果发生数据库连接问题、SQL语法错误或查询结果读取异常, 代码会捕获异常并打印堆栈跟踪, 以便于调试。 3. **数据库连接和预编译语句**: 方法开始时获取数据库连接 (`getConnection()`), 接着创建PreparedStatement对象 (`PreparedStatement stat = conn.prepareStatement(sql)`), 这种方式可以提高性能并防止SQL注入攻击。PreparedStatement实例化后, 调用 `executeQuery()` 方法执行SQL查询。 4. **数据处理和返回结果**: 通过 `ResultSet` 对象 `rs` 读取查询结果行, 将每一行的数据转换为一个Object数组 (`Object[] obj`),并将这些对象添加到 `ArrayList<Object[]> dataList` 中。最后, 将 `dataList` 转换为二维Object数组 `Object[][] data` 并返回。这样做是为了将查询结果以更便于处理的形式传递给调用者。 5. **设计模式与职责**: `OrderDao` 可能遵循了面向切面编程(AOP)或者单职责原则(SRP),因为它只关注数据库操作,而将业务逻辑(如异常处理和数据格式转换)与具体的业务对象(如订单服务)分离。这有助于维护代码的清晰性和可测试性。 总结来说, "OrderDao.txt" 是一个Java数据库访问类,主要用于从 "tb_order" 表中检索数据,并提供了异常处理机制以确保数据获取的稳定性和安全性。它的核心功能是提供了一个查询订单详情的方法,便于上层业务逻辑进行数据处理和展示。

static Scanner sc = new Scanner(System.in); static File file=new File("D:\\HeimaIT\\OtherData\\lycode\\javase\\takeawaysystem2\\src\\com\\itheima\\dao\\impl\\ResterauntInfo.txt"); static ArrayList<Resteraunt> resteraunts = new ArrayList<>(); static ArrayList<Menu> orderList = new ArrayList<Menu>(); static ArrayList<Menu> menus = new ArrayList<>(); OrderService orderService=new OrderServiceImpl(); static OrderDaoImpl orderDao = OrderDaoImpl.getInstance(); //单例设计,返回永远的一个resterauntDao对象 static ResterauntDaoImpl resterauntDao=new ResterauntDaoImpl(); private ResterauntDaoImpl() { } static { //加载读取orderDao层的arraylist。用来后面的餐厅加载 ArrayList<ArrayList<Menu>> arrayLists = orderDao.readOrder(); Resteraunt resteraunt = new Resteraunt("家常菜馆1", arrayLists.get(0)); Resteraunt resteraunt2 = new Resteraunt("平价菜馆2", arrayLists.get(1)); Resteraunt resteraunt3 = new Resteraunt("高贵菜馆1", arrayLists.get(2)); Collections.addAll(resteraunts, resteraunt, resteraunt2, resteraunt3); try ( ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file)); ){ objectOutputStream.writeObject(resteraunts); } catch (Exception e) { e.printStackTrace(); } } public static ResterauntDaoImpl getInstance(){ return resterauntDao; } public ArrayList<Resteraunt> readResterauntInfo() throws IOException, ClassNotFoundException { ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file)); Object o = objectInputStream.readObject(); ArrayList<Resteraunt> o1 = (ArrayList<Resteraunt>) o; return o1; }

2023-06-10 上传

OrderController.java 文件信息如下: package order.controller; import … _______1______ public class OrderController { private OrderService orderService; @GetMapping("/__2__/{orderId}") public Order deleteOrder(@PathVariable("____3_____") Integer id) { Order order = orderService.deleteById(_______4_____); return order; } } OrderServiceImpl.java 文件信息如下: Package order.service.impl; import … ____5_____ public class OrderServiceImpl implements OrderService { ______6________ private OrderDao orderDao; @Override public Article deleteById(Integer orderId) { return______7____.deleteById(orderId); } } OrderDao.java 文件信息如下: package order.dao; import … ____8______ public interface OrderDao { Article deleteById(Integer orderId); } OrderMapper.xml 文件信息如下: <?xml version="1.0" encoding="UTF-8"?> <mapper namespace="____9_____"> <delete id="_____10_______" > delete from order where id = #{id} </select> </mapper>

2023-06-01 上传