模仿三层架构中的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宠物领 |