首页 > 分享 > 宠物管理系统:Dao层

宠物管理系统:Dao层

        模仿三层架构中的Dao层,是数据访问层,不同的是并非从数据库中获取数据,而是从文件中获取数据。

        BaseDao:最基本的数据访问,包括数据的获取和保存。

package com.wzb.dao;

import java.io.*;

import java.util.ArrayList;

public class BaseDao {

public <T> void saveToFile(String filename, ArrayList<T> list) {

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) {

oos.writeObject(list);

oos.flush();

} catch (IOException e) {

e.printStackTrace();

}

}

public <T> ArrayList<T> loadFromFile(String filename) {

ArrayList<T> list = new ArrayList<>();

try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {

list = (ArrayList<T>) ois.readObject();

} catch (FileNotFoundException e) {

} catch (IOException | ClassNotFoundException e) {

e.printStackTrace();

}

return list;

}

}

        UserDao:专门用于处理用户的数据。

package com.wzb.dao;

import com.wzb.bean.User;

import java.util.ArrayList;

public interface UserDao {

public Integer getNextId();

void insert(User user);

ArrayList<User> getAllUser();

public void saveUpdatedUserById(User updatedUser);

public void deleteUserById(int id);

}

package com.wzb.dao.impl;

import com.wzb.bean.User;

import com.wzb.dao.BaseDao;

import com.wzb.dao.UserDao;

import com.wzb.utils.md5.MD5Util;

import java.util.ArrayList;

public class UserDaoImpl extends BaseDao implements UserDao {

private static final String USER_FILE = "users.dat";

private ArrayList<User> users;

public Integer getNextId() {

users = loadFromFile(USER_FILE);

if (users.isEmpty()) {

return 0;

} else {

return users.get(users.size() - 1).getId() + 1;

}

}

public UserDaoImpl() {

users = loadFromFile(USER_FILE);

if (users.isEmpty()) {

User admin = new User(getNextId(), "wzb", MD5Util.md5("123456"), "123456", Integer.MAX_VALUE);

users.add(admin);

saveToFile(USER_FILE, users);

}

}

@Override

public void insert(User user) {

users.add(user);

saveToFile(USER_FILE, users);

}

@Override

public ArrayList<User> getAllUser() {

users = loadFromFile(USER_FILE);

return users;

}

@Override

public void saveUpdatedUserById(User updatedUser) {

for (int i = 0; i < users.size(); i++) {

if (users.get(i).getId().equals(updatedUser.getId())) {

users.set(i, updatedUser);

saveToFile(USER_FILE, users);

return;

}

}

}

@Override

public void deleteUserById(int id) {

users.removeIf(user -> user.getId() == id);

saveToFile(USER_FILE, users);

}

}

        PetDao:专门用于宠物数据的处理。

package com.wzb.dao;

import com.wzb.bean.Pet;

import java.util.ArrayList;

public interface PetDao {

int getNextId();

void insert(Pet pet);

ArrayList<Pet> getAllPet();

public void saveUpdatedPetById(Pet updatedPet);

public boolean deletePetById(int id);

}

package com.wzb.dao.impl;

import com.wzb.bean.Pet;

import com.wzb.dao.BaseDao;

import com.wzb.dao.PetDao;

import java.util.ArrayList;

import java.util.Collections;

public class PetDaoImpl extends BaseDao implements PetDao {

private static final String PET_FILE = "pets.dat";

private ArrayList<Pet> pets;

public int getNextId() {

pets = loadFromFile(PET_FILE);

if (pets.isEmpty()) {

return 0;

} else {

return pets.get(pets.size() - 1).getId() + 1;

}

}

public PetDaoImpl() {

pets = loadFromFile(PET_FILE);

if (pets.isEmpty()) {

Pet king = new Pet(0, "wzb-pet", 10, 70.0, "food", Integer.MAX_VALUE, 1);

Pet dog = new Pet(1, "旺财", 2, 20.0, "bone", 500, 1);

Pet cat = new Pet(2, "哈基米", 1, 15.0, "fish", 500, 2);

Collections.addAll(pets, king, dog, cat);

saveToFile(PET_FILE, pets);

}

}

@Override

public void insert(Pet pet) {

pets.add(pet);

saveToFile(PET_FILE, pets);

}

@Override

public ArrayList<Pet> getAllPet() {

pets = loadFromFile(PET_FILE);

return pets;

}

@Override

public void saveUpdatedPetById(Pet updatedPet) {

for (int i = 0; i < pets.size(); i++) {

if (pets.get(i).getId().equals(updatedPet.getId())) {

pets.set(i, updatedPet);

saveToFile(PET_FILE, pets);

return;

}

}

}

@Override

public boolean deletePetById(int id) {

pets.removeIf(pet -> pet.getId() == id);

saveToFile(PET_FILE, pets);

return true;

}

}

相关知识

宠物的管理系统说明文档.doc
基于Spring Boot的宠物医院管理系统设计与实现
使用DAO模式开发宠物管理系统
在Java源码基础上,如何实现宠物店后台管理系统的宠物信息、订单处理和用户管理功能模块?
python写一个宠物管理系统 宠物管理系统数据流图
书店管理系统
分享一个宠物管理系统的设计思想
jsp宠物医疗管理系统2p324
java宠物之家代码 javaweb宠物管理系统项目
SSM+宠物领养系统毕业设计

网址: 宠物管理系统:Dao层 https://m.mcbbbk.com/newsview949415.html

所属分类:萌宠日常
上一篇: 服务器如何删除宠物
下一篇: Java项目:312SSM宠物领