这里我们还是以房产信息管理系统的题目举例:

发现在DAO层和service层都有接口类(注:impl是实现类)

为什么要用接口,不直接写实现类:

1、简单、规范性:这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)

2、便于维护、拓展:在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦,如果你一开始定义一个接口,把函数功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。

3、安全、严密性:它描述了系统对外的所有服务,而不涉及任何具体的实现细节。这样比较安全、严密一些(一般软件服务商考虑的比较多)

DAO层接口类

package com.yan.web.dao;

import com.yan.web.entity.AdminEntity;
import com.yan.web.entity.Customer; import java.util.List; public interface AdminDao {
AdminEntity getAdminByUserName(String userName); //注册
int addUser(AdminEntity adminEntity); List<Customer> adminList(String userName, Integer id);
List<Customer> adminList(); int deleteAdminById(Integer id); int updateAdmin(AdminEntity admin);
}

service层接口

package com.yan.web.service;

import com.yan.web.entity.AdminEntity;

/**
* 管理服务
*
* @author galax
* @date 2022/10/19
*/
public interface AdminService {
/**
* 被用户名admin
*
* @param userName 用户名
* @return {@link AdminEntity}
*/
AdminEntity getAdminByUserName(String userName); /**
* 添加用户
*
* @param adminEntity 管理实体
* @return boolean
*/// 注册
boolean addUser(AdminEntity adminEntity);
}

DAO层实现类

AdminDaoImpl.java(其他dao类同理)【完整代码】

package com.yan.web.dao.Impl;

import com.yan.web.dao.AdminDao;
import com.yan.web.entity.AdminEntity;
import com.yan.web.entity.Customer;
import com.yan.web.util.jdbcUtil; import java.sql.*;
import java.util.ArrayList;
import java.util.List; /**
* @author chenshy
* @date 2022/10/19
*/
public class AdminDaoImpl implements AdminDao {
/**
* 被用户名admin
*
* @param userName 用户名
* @return {@code AdminEntity}
*/
@Override
/*通过姓名获取输入的信息*/
public AdminEntity getAdminByUserName(String userName) {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("select * from admin where user_name=?");
try {
ps = connection.prepareStatement(stringBuilder.toString());
// 第一个?的参数
ps.setString(1, userName);
rs = ps.executeQuery();
if (rs.next()) {
int aid = rs.getInt("id");
String name = rs.getString("user_name");
String password = rs.getString("pwd");
int state = rs.getInt("state");
AdminEntity adminEntity = new AdminEntity();
adminEntity.setId(aid);
adminEntity.setUserName(name);
adminEntity.setPwd(password);
adminEntity.setState(state);
return adminEntity;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return null;
} /**
* 添加用户
*
* @param adminEntity 管理实体
* @return int
*/
@Override
/*将获取的信息添加到数据库中*/
public int addUser(AdminEntity adminEntity) {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("insert into admin(user_name,pwd,state) VALUES(?,?,?)");
try {
ps = connection.prepareStatement(stringBuilder.toString());
ps.setString(1, adminEntity.getUserName());
ps.setString(2, adminEntity.getPwd());
ps.setInt(3, adminEntity.getState());
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return 0;
} @Override
public List<Customer> adminList(String userName, Integer id) {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("select * from customer");
try {
ps = connection.prepareStatement(stringBuilder.toString());
// ps.setObject(1, "%" + userName + "%");
// ps.setObject(2, id);
rs = ps.executeQuery();
List<Customer> list = new ArrayList<>();
while (rs.next()) {
long ids = rs.getInt("UserID");
String userName1 = rs.getString("UserName");
String sex = rs.getString("sex");
String IdNumber = rs.getString("IdNumber");
String Phone = rs.getString("Phone");
String User = rs.getString("User");
int audit = rs.getInt("audit");
String password = rs.getString("password");
Customer customer = new Customer();
customer.setUserid(ids);
customer.setUsername(userName1);
customer.setSex(sex);
customer.setIdnumber(IdNumber);
customer.setPhone(Phone);
customer.setUser(User);
customer.setAudit(audit);
customer.setPassword(password);
list.add(customer);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return null;
} public List<Customer> adminList() {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("select * from customer");
try {
ps = connection.prepareStatement(stringBuilder.toString());
// ps.setObject(1, "%" + userName + "%");
// ps.setObject(2, id);
rs = ps.executeQuery();
List<Customer> list = new ArrayList<>();
while (rs.next()) {
long ids = rs.getInt("UserID");
String userName1 = rs.getString("UserName");
String sex = rs.getString("sex");
String IdNumber = rs.getString("IdNumber");
String Phone = rs.getString("Phone");
String User = rs.getString("User");
int audit = rs.getInt("audit");
String password = rs.getString("password");
Customer customer = new Customer();
customer.setUserid(ids);
customer.setUsername(userName1);
customer.setSex(sex);
customer.setIdnumber(IdNumber);
customer.setPhone(Phone);
customer.setUser(User);
customer.setAudit(audit);
customer.setPassword(password);
list.add(customer);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return null;
} @Override
public int deleteAdminById(Integer id) {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("delete from admin where id=?");
try {
ps = connection.prepareStatement(stringBuilder.toString());
ps.setObject(1, id);
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return 0;
} @Override
public int updateAdmin(AdminEntity admin) {
Connection connection = jdbcUtil.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("update admin set user_name=?,pwd=?,state=? where id =?");
try {
ps = connection.prepareStatement(stringBuilder.toString());
ps.setObject(1, admin.getUserName());
ps.setObject(2, admin.getPwd());
ps.setObject(3, admin.getState());
ps.setObject(4, admin.getId());
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(connection, ps, rs);
}
return 0;
}
}

下面我们来解读一下(下一篇)

【Javaweb】四(关于接口类的作用)的更多相关文章

  1. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  2. python's twenty-first day for me 抽象类和接口类以及多态

    归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) c ...

  3. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

  4. Java 中的接口有什么作用?以及接口和其实现类的关系?

    Java 中的接口有什么作用? - Ivony的回答 - 知乎 https://www.zhihu.com/question/20111251/answer/16585393 这是一个初学者非常常见的 ...

  5. 接口java.util.Map的四个实现类HashMap Hashtable LinkedHashMap TreeMap

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 :java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMa ...

  6. dojo省份地市级联之地市Dao接口类(四)

    dojo省份地市级联之地市Dao接口类 CityDao.java: /** * 地市 */ package com.you.dao; import java.util.List; import com ...

  7. day24-抽象类与接口类

    接口类 1.继承有两种用途:一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继 ...

  8. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  9. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  10. Java程序设计(2021春)——第四章接口与多态笔记与思考

    Java程序设计(2021春)--第四章接口与多态笔记与思考 本章概览: 4.1 接口(接口的概念和声明接口.实现接口的语法) 4.2 类型转换 4.3 多态的概念 4.4 多态的应用 4.5 构造方 ...

随机推荐

  1. 揭秘 .NET 中的 TimerQueue(下)

    前言 上文给大家介绍了 TimerQueue 的任务调度算法. https://www.cnblogs.com/eventhorizon/p/17557821.html 这边做一个简单的复习. Tim ...

  2. Vue 框架下提升加载速度的一些实战经验分享

    现在前端的框架有很多,甚至两只手已经数不过来,当然也完全没必要全部都学,还是应该深入的学习一两个被广泛使用的就好.其实我和大部分同学的想法一致,认为最值得我们深究的还是主流的 Vue 和 React. ...

  3. ENVI+ERDAS实现Hyperion叶绿素含量反演:经验比值法、一阶微分法

    本文介绍基于ENVI与ERDAS软件,依据Hyperion高光谱遥感影像,采用经验比值法.一阶微分法等,对叶绿素含量等地表参数加以反演的具体操作. 目录 1 前期准备与本文理论部分 1.1 几句闲谈 ...

  4. plt.rcParams运行时修改全局配置参数

    plt.rcParams简单介绍 plt.rcParams即 "运行时配置参数"("runtime configuration parameters"),是运行 ...

  5. 《小白WEB安全入门》03. 漏洞篇

    @ 目录 SQL注入和简单绕过原理 什么是SQL 什么是SQL注入 XSS漏洞原理 什么是XSS XSS分类 NOSQL注入 什么是NOSQL CSRF原理 什么是CSRF 网络摄像头入侵原理 什么是 ...

  6. API接口的对接流程和注意事项

    ​ API接口的对接流程和注意事项 随着互联网技术的发展和数字化时代的到来,API接口已经成为应用程序之间进行数据交换和通信的重要方式.API即应用程序接口,是一种定义.调用和交互的规范,使得不同应用 ...

  7. 低代码引擎 TinyEngine 正式发布!

    在当今数字化飞速发展的时代,企业对高效.敏捷的应用程序需求日益旺盛.为了满足这一需求,越来越多的低代码开发平台开始涌现.这些平台通过提供简单易用的开发工具和优化后的开发流程,帮助开发者快速构建高质量. ...

  8. c语言代码练习14

    //设计一个猜数字游戏,需要提示猜大了还是小了,直到猜对为止 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include & ...

  9. Blackmail

    Blackmail Arthur Hailey The chief house officer, Ogilvie, who had declared he would appear at the Cr ...

  10. JDK对于Java的作用

    JDK是Java Development Kit的缩写,是Java的开发工具包(SDK).JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简 ...