java模拟数据持久化

数据持久化可:把程序中的数据以某种形式保存到某存储介质中,以达到持久化的目的(把数据保存到硬盘或数据库中)

序列化(Serialization)也叫串行化,是java内置的持久化java对象机制,只要某个类实现了java.io.Serialization接口,就能够使用java.io.ObjectOutputStream将该类对象以二进制字节码的形式写到硬盘上,并能够使用java.io.ObjectInputStream将该对象从硬盘上还原。这样,即使重启电脑,该java对象也能从硬盘上恢复

模拟person对象数据持久化——保存到文件||数据库||其他(保存数据、查找数据)

Person.java

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Person implements Serializable{
    private static final long serialVersionUID = 1L;
    private String name;//姓名
    private List<String> hobby = new ArrayList<String>();//爱好
    //生成所有属性getter和setter的方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getHobby() {
        return hobby;
    }
    public void setHobby(List<String> hobby) {
        this.hobby = hobby;
    }
    //重写toString方法
    @Override
    public String toString() {
        return "爱好:" + hobby + ", 姓名" + name;
    }
}
 

Console.java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.Arrays;

//导入自定义Person包

public class Console {

    //当前文件夹,即当前项目的存放路径
    public static File directory = new File(System.getProperty("user.dir"));
    //控制台输入
    public static String systemRead()throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        return reader.readLine();
    }
    //将person对象持久化到硬盘上,模拟以文件的形式存储数据
    public static void persist(Person person) throws IOException{
        File file = new File(directory,person.getName()+".txt");
        ObjectOutput output = new ObjectOutputStream(new FileOutputStream(file));
        //保存对象
        output.writeObject(person);
        output.close();
        System.out.println("文件保存在:"+file);
    }
    //将person对象从硬盘上恢复,从该文件读出数据
    public static Person load(String name) throws Exception{
        File file = new File(directory,name+".txt");
        if(!file.exists()){
            return null;
        }
        ObjectInput ins = new ObjectInputStream(new FileInputStream(file));
        //读取对象
        return (Person)ins.readObject();
    }
    /**
     * @param args
     */
    public static void main(String[] args)throws Exception {
        // TODO Auto-generated method stub
        System.out.println("人员信息管理系统.");
        System.out.println("1.输入'save'开始录入人员信息.");
        System.out.println("2.输入'load'开始查询人员信息");
        System.out.println("3.输入'exit'退出系统");
        System.out.println("请输入(回车结束输入):");
        //获取用户输入信息
        String menu = systemRead();
        //如果输入的为save,则继续输入人员的姓名、爱好
        if("save".equalsIgnoreCase(menu)){
            System.out.println("请输入要录入的人员姓名:");
            //获取输入人员的姓名
            String name = systemRead();
            System.out.println("请输入'"+name+"'爱好,用','隔开:");
            //获取输入人员的爱好
            String hobbies = systemRead();
            Person person = new Person();
            person.setName(name);
            person.setHobby(Arrays.asList(hobbies.split(",")));
            //持久化人员对象
            persist(person);
           //如果输入的为load,则继续查找人员的姓名,然后根据姓名查询该人员的信息
        }else if("load".equalsIgnoreCase(menu)){
            System.out.println("请输入要查找的人员姓名:");
            //获取输入人员的姓名
            String name = systemRead();
            //根据姓名查询人员,并返回人员相关信息
            Person person = load(name);
            if(person == null){
                System.out.println("没有此人员信息");
            }else{
                System.out.println("查询结果"+person);
            }
            //如果输入的为exit,则退出程序
        }else{
            System.out.println("无效输入:"+menu);
            System.out.println();
            //继续执行main主函数
            main(null);
        }
    }

}

转载于:https://my.oschina.net/u/3378039/blog/1844052

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jmockdata(再也不用苦逼的造测试数据了) Jmockdta是一款实现模拟JAVA类型或对象的实例并随机初始对象的数据的工具框架。单元测试的利器。     The plug-in of Jmockdata what through random algorithm mock java data.   Jmockdata插件通过随机算法模拟Java数据.   版本信息 Jmockdata-2.0 发布时间 2017-02-03 Jmockdata-1.0 发布时间 2017-01-04 具体介绍和用法可以参考如下:   0. 模拟数据入口方法 JMockData.mock(JmockDataWrapper) 1. 被模拟数据必须继承JmockDataWrapper经过它的包装 2. 被模拟的数据最好是plain bean,只提供getter,setter,has,is方法的才可以被模拟 3. 框架默认实现了40个元数据类型的数据模拟器包括:   byte.class,Byte.class,byte[].class,Byte[].class, short.class,Short.class,short[].class,Short[].class, int.class,Integer.class,int[].class,Integer[].class, long.class,Long.class,long[].class,Long[].class, float.class,Float.class,float[].class,Float[].class, double.class,Double.class,double[].class,Double[].class, boolean.class,Boolean.class,boolean[].class,Boolean[].class, char.class,Character.class,char[].class,Character[].class, String.class,String[].class, BigDecimal.class,BigDecimal[].class, BigInteger.class,BigInteger[].class, Date.class,Date[].class 通过对以上基本元数据类型的模拟实现,本框架可以轻松模拟由以上元数据结构组成的BEAN、LIST、SET、ARRAY等复杂深度的数据结构的数据模拟。   4. 可以通过JmockDataContext 获取模拟过程的所有上下文信息,甚至可以打印整个模拟类型树   5. 可以通过JMockDataManager 注册模拟数据类型,重写模拟数据算法,注册模拟数据类拦截器等 6. 可以通过实现MockData来实现一个模拟数据类型 7. 可以通过实现JmockDataTemplate,或者继承JmockDataTemplateDefault来重写模拟数据算法 8. 可以通过实现JmockDataInterceptor来实现一个拦截器 9. 具体示例实践请参考https://github.com/jsonzou/jmockdata-demo 10. 有问题或者对本框架有新的想法,请联系我, 作者:jsonzou 标签:Jmockdata

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值