当前位置: 首页 > news >正文

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;}@Overridepublic 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 {@Overridepublic int add(User v) {User user= (User)v;System.out.println("[add]: "+ user);return 1;}@Overridepublic int delete(User v) {User user= (User)v;System.out.println("[delete]: "+ user);return 1;}@Overridepublic int update(User v) {User user= (User)v;System.out.println("[update]: "+ user);return 1;}@Overridepublic User find(User v) {User user= (User)v;System.out.println("[find]: "+ user);return user;}@Overridepublic 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 stubIUserIntf 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. 结语

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

http://www.lryc.cn/news/36030.html

相关文章:

  • 从零开始学架构——复杂度来源
  • 什么时候需要分表分库?
  • 冰刃杀毒工具使用实验(29)
  • 聊聊图像分割的DICE和IOU指标
  • 软件设计师教程(十)计算机系统知识-结构化开发
  • 链表OJ之 快慢指针法总结
  • C++STL详解(五)——list的介绍与使用
  • 进程和进程的调度
  • TypeScript 深度剖析:TypeScript 的理解?与 JavaScript 的区别?
  • 美颜SDK关键技术讲解——人脸识别与人脸美化
  • Linux下C/C++ 网络扫描(主机扫描技术)
  • 无法将“vue-cli-service”项识别为 cmdlet、函数、脚本文件或不是内部命令的原因和解决方案
  • 逆流程 场景下 处理状态机变化的方案
  • 【剧前爆米花--爪哇岛寻宝】Java实现无头单向非循环链表和无头双向链表与相关题目
  • 学习MvvmLight工具
  • 基于BiLSTM+CRF医学病例命名实体识别项目
  • 05 C语言数据类型
  • C++11:右值引用和移动语义
  • tcpdump网络抓包工具
  • MaxCompute SQL中的所有保留字与关键字如下
  • Kafka 压缩算法
  • 关于React Hook(18)
  • 计算机网络:BGP协议
  • 91. 解码方法 ——【Leetcode每日刷题】
  • 人体存在传感器成品方案,精准感知静止存在,实时智能化感控技术
  • mysql连接池的实现
  • 哪种类型蓝牙耳机佩戴最舒服?舒适度最好的蓝牙耳机推荐
  • 2020蓝桥杯真题洁净数 C语言/C++
  • 【随笔二】useReducer详解及其应用场景
  • 打怪升级之istringstream介绍