Java基础 关于字典数据维护接口设计

开发环境

        Eclipse2022+JDK1.8

目录

1. 概述

2. 实现步骤

        2.1 定义通用接口

        2.2 定义实体类

        2.3 接口扩展

        2.4 接口实现

        2.5 功能测试

3. 结语


1. 概述

        每一个信息系统或多或少都带有一些数据字典,在维护上,基本上分为增删改查,也就是对数据库进行CRUD操作。为每一个字典新建实体类,在dao层也就会进行一些常规的CRUD接口操作。如果为每一个实体类都写一个interface接口,这个感觉就比较繁琐。为此,想简化下工作量,在网上找了不少文章,具有此想法的大佬还是不少。设计的思路是定义一个通用接口,通过泛型,定义CRUD相关基本接口.

2. 实现步骤

        2.1 定义通用接口

        通过泛型定义接口,也就是说,传递进来的V,可以是任意实体类,比如User(用户)、Dept(科室)等数据字典表.

package fxjk;

import java.util.List;

public interface ICommonIntf<K,V> {
	int add(V v);
	int delete(V v);
	int update(V v);
	V find(V v);
}

        2.2 定义实体类

        我在本地新建了User类,赋予账号、密码属性。

package entity;

public class User {
	private String username;
	private String password;
	
	public User() {
		super();
	}
	
	public User(String username, String password) {
		super();
		this.username= username;
		this.password= password;
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + "]";
	}
	
}

        2.3 接口扩展

        考虑到User类可能有特殊的操作,通过接口继承接口,对通用接口进行了扩展,这只是一个思路. 需要注意的是,在代码实现接口部分,确定了具体实体类User. 在此基础上,额外的扩展了query方法。

package fxjk;

import java.util.Map;
import entity.User;

public interface IUserIntf extends ICommonIntf<String, User> {
	Map<String,Object> query(Object obj);
}

        2.4 接口实现

        新建类 UserIntfImpl 实现接口 IUserIntf,而 IUserIntf 又继承了通用接口 ICommonIntf,所有,在 UserIntfImpl  里实现了IUserIntf 和 ICommonIntf的方法。此处我直接写了实现

package fxjk;

import java.util.*;
import entity.User;

public class UserIntfImpl implements IUserIntf {

	@Override
	public int add(User v) {
		User user= (User)v;
		System.out.println("[add]: "+ user);
		return 1;
	}

	@Override
	public int delete(User v) {
		User user= (User)v;
		System.out.println("[delete]: "+ user);
		return 1;
	}

	@Override
	public int update(User v) {
		User user= (User)v;
		System.out.println("[update]: "+ user);
		return 1;
	}

	@Override
	public User find(User v) {
		User user= (User)v;
		System.out.println("[find]: "+ user);
		return user;
	}

	@Override
	public Map<String, Object> query(Object obj) {
		Page page= (Page)obj;
		Map<String,Object> map= new HashMap<>();
		User user1= new User("ceaning","123qwe,.");
		User user2= new User("king","321qwe,.");
		map.put("1", user1);
		map.put("2", user2);
		map.put("1", user2);
		System.out.println("[query]: "+ map);
		return map;
	}

}

        2.5 功能测试

        新建一个测试类,加入main方法,代码如下:

package fxjk;

import entity.User;

public class UserTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		IUserIntf service= new UserIntfImpl();
		User user= new User("heelo", "world");
		//Page page= new Page(1, 10);
		
		service.add(user);
		service.delete(user);
		service.update(user);
		service.find(user);
		service.query(user);
	}

}

3. 结语

        这种写法适合维护数据字典,在实际开发中,可能还是有这种写法。开发方法多种多样,也许还有其他更有趣的写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值