高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤(上)

简介: 高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤

1、三层架构

一种合理的项目分层理念,好处为可以简化设计、各司其职、更容易扩展内容

三层架构分为:

表示层(UI、WEB):跟用户对接

业务逻辑层(service):书写功能的整体逻辑

数据访问层(dao):对接数据库

1.1、数据访问层

DAO:和数据库交接、内存放着对数据库内容增删改查的方法

1.2、业务逻辑层

Service:存放着代表主要功能的方法,内部内容主要为调用DAO+逻辑控制代码

1.2.1、组成

Service接口:


一张表对应一个Service

Service中存放着与该表相关的所有功能方法

命名与表名相关:PersonService

包:须存放在service包下 com.xxx.service

Service实现类:


一个实现类实现一个service接口

命名为接口名+Impl:PersonServiceImpl

包:须存放在service.impl下 com.xxx.service.impl

1.3、表示层

view:负责跟用户对接

1.3.1、实现

一个功能一个视图类

命名:功能+View

包:须放在view包下 com.xxx.view

内容:调用service+Scanner

1.4、完整实现步骤

1.书写实体类

package com.bz.entity;
import java.io.Serializable;
public class User implements Serializable {
    private Integer id;
    private String username;
    private String pwd;
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
    public User(Integer id, String username, String pwd) {
        this.id = id;
        this.username = username;
        this.pwd = pwd;
    }
}

2.书写DAO

package com.bz.dao;
import com.bz.entity.User;
/**
 * 跟数据库对接:从数据库中查找user信息
 */
public interface UserDao {
    /**
     * 查询用户信息是否存在
     * @param username  用户名
     * @param pwd 密码
     * @return  用户对象
     */
    User selectUser(String username,String pwd) throws Exception;
}

3.书写DaoImpl


package com.bz.dao.impl;
import com.bz.dao.UserDao;
import com.bz.entity.User;
import com.bz.util.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDaoImpl implements UserDao {
    @Override
    public User selectUser(String username, String pwd) throws Exception {
        User user=null;//用来返回
        Connection conn= JDBCUtils.getConnection();
        String sql = "select * from t_user where u_username=? and u_pwd=?";
        PreparedStatement ps=conn.prepareStatement(sql);
        ps.setString(1,username);
        ps.setString(2, pwd);
        ResultSet rs=ps.executeQuery();
        if (rs.next()) {
            Integer id = rs.getInt("u_id");
            String name = rs.getString("u_username");
            String password = rs.getString("u_pwd");
            user = new User(id, name, password);
        }
        JDBCUtils.close(rs,ps,conn);
        return user;
    }
}

4.书写Service

package com.bz.service;
public interface UserService {
    /**
     * 用户登录
     * @param username  用户输入的账号名
     * @param pwd 用户输入的密码
     * @return 是否登录成功
     */
    boolean login(String username,String pwd) throws Exception;
}

5.书写ServiceImpl

package com.bz.service.impl;
import com.bz.dao.UserDao;
import com.bz.dao.impl.UserDaoImpl;
import com.bz.service.UserService;
public class UserServiceImpl implements UserService {
    //创建Dao对象
    private UserDao ud=new UserDaoImpl();
    @Override
    public boolean login(String username, String pwd)throws Exception {
        if (ud.selectUser(username, pwd)!=null) {
            return true;
        }else{
            return false;
        }
    }
}

6.书写view

package com.bz.view;
import com.bz.service.UserService;
import com.bz.service.impl.UserServiceImpl;
import java.util.Scanner;
/**
 * 用户登录
 */
public class UserloginTest {
    public static void main(String[] args) throws Exception{
        UserService us=new UserServiceImpl();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username=sc.next();
        System.out.println("请输入密码:");
        String pwd=sc.next();
        //调用Service方法判断登录是否成功
        if (us.login(username,pwd)){
            System.out.println("登录成功!");
        }else {
            System.out.println("登录失败");
        }
    }
}
目录
相关文章
|
1月前
|
安全 Java 数据库连接
gbase8a JDBC常用特性-Kerberos认证方式连接
JDBC常用特性-Kerberos认证方式连接
|
1月前
|
Java 数据库连接 网络安全
JDBC常用特性-SSH隧道连接
JDBC常用特性-SSH隧道连接
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
29天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
154 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
2月前
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
4天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2天前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
2月前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
29 0