当前位置: 首页> 健康> 母婴 > 网站搜索引擎推广方案_成都网站优化服务_手游推广渠道平台_百度云搜索引擎入口官网

网站搜索引擎推广方案_成都网站优化服务_手游推广渠道平台_百度云搜索引擎入口官网

时间:2025/7/31 23:52:55来源:https://blog.csdn.net/m0_74124657/article/details/143634569 浏览次数:0次
网站搜索引擎推广方案_成都网站优化服务_手游推广渠道平台_百度云搜索引擎入口官网

目录

DAO模式 含义

DAO模式 的理解

分层思维

分层含义

分层目的

dao层

dao包(对接的是操作数据库的接口)

dao包下lmpl 包(dao包中接口的实现类)

补充

1 你创建的实体类需要和数据库中建的表一一对应。

总结


DAO模式 含义

数据访问对象(Data Access Object)模式,是一种设计模式,主要用于将业务逻辑与数据访问代码分离,以提高代码的模块化、可维护性和可测试性

DAO模式 的理解

理解DAO模式,我认为最为重要的:理解分层思维

分层思维

分层含义

  • 将系统分解成多个层次,每个层次都有明确的职责和功能,并且层次之间通过定义良好的接口进行交互
  • 我认为应该把,同一功能/同一技术类型的类,放在同一包下

例如,Java分为经典三层模型

经典的三层架构(表现层、业务逻辑层、数据访问层)

  • 表现层:负责用户界面和用户交互,如Web页面、桌面应用界面等。
  • 业务逻辑层:处理业务规则和业务流程,如订单处理、用户认证等。
  • 数据访问层:负责数据的持久化,如数据库操作。
  • 以下是一些常见的
  1. web层:表现层负责用户界面和用户交互,如Web页面、桌面应用界面
  2. service层:业务逻辑层(主要处理业务,逻辑代码,数据加工,条件判断)
  3. dao层:数据访问层,封装与数据库操作
  4. entity/domain..层 实体类(对应的数据库的表的类)
  5. util :工具类(如jdbcUtil 封装 连接的数据库的一些操作)

分层目的

1 技术隔离

  • 比如dao层使用的技术jdbc jdbc中的核心的api 类 不能在其他的类出现

2 不能跨层调用

如下图 展示的:

dao层

数据访问层,封装数据库的操作

  • dao包(对接的是操作数据库的接口)
  • dao包下lmpl 包(dao包中接口的实现类)
dao包(对接的是操作数据库的接口)

StudentDao 接口实例代码

// 查询public Student showStudent(int id);//查询所有学生public List<Student> showAllStudent();// 删除public boolean delete(int id);// 修改public boolean update(Object...params);// 添加public boolean add(Object...params);

UserDao接口实例代码

// 登录int  login( String username, String password);// 注册int  register(String username, String password);
dao包下lmpl 包(dao包中接口的实现类)
  • StudentDaoImpl类 实现StudentDao 接口
  •  UserDaoImpl 类    实现UserDao接口

StudentDaoImpl 实例代码

package it.dao.impl;import it.Util.jdbcUtil;
import it.dao.StudentDao;
import it.dao.UserDao;
import it.entity.Student;import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @Author: Administrator* @Description:* @Date: 2024/11/8 下午4:54* @Version: 1.0*/
public class StudentDaoImpl implements StudentDao {Scanner input = new java.util.Scanner(System.in);/**  根据id查询学生*/@Overridepublic Student showStudent(int id) {String sql = "select stuId, stuName, stuSex, stuAge  from student where stuId=?";String stuName = null;int stuAge = 0;int stuId = 0;String stuSex = null;try {ResultSet resultSet = jdbcUtil.executeQuery(sql, id);if (resultSet.next()) {stuId = resultSet.getInt("stuId");stuName = resultSet.getString("stuName");stuSex = resultSet.getString("stuSex");stuAge = resultSet.getInt("stuAge");return new Student(stuName, stuAge, stuSex, stuId);} else {System.out.println("该学生不存在");return null;}} catch (SQLException e) {throw new RuntimeException(e);}}/**  查询所有学生*/@Overridepublic List<Student> showAllStudent() {String sql = "select stuId, stuName, stuSex, stuAge  from student";List<Student> list = new ArrayList<>();try {Connection conn = jdbcUtil.getConnection();Statement statement = conn.createStatement();ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {int stuId = resultSet.getInt("stuId");String stuName = resultSet.getString("stuName");String stuSex = resultSet.getString("stuSex");int stuAge = resultSet.getInt("stuAge");Student student = new Student(stuName, stuAge, stuSex, stuId);list.add(student);}} catch (SQLException e) {throw new RuntimeException(e);}return list;}/*删除学生信息*/@Overridepublic boolean delete(int id) {String sql = "delete from student where stuId=?";int i = jdbcUtil.executeUpdate(sql, id);if (i > 0) {return true;}return false;}@Overridepublic boolean update(Object... params) {String sql = "update student set stuName=?,stuAge=?,stuSex=? where stuId=?";int i = jdbcUtil.executeUpdate(sql, params);if (i > 0) {return true;} else {return false;}}/*
添加学生信息
*/@Overridepublic boolean add(Object... params) {String sql = "insert into student(stuName,stuSex,stuAge) values(?,?,?)";int i = jdbcUtil.executeUpdate(sql, params);if (i > 0) {return true;} else {return false;}}
}

 UserDaoImpl 类的实例代码

package it.dao.impl;import it.Util.jdbcUtil;
import it.dao.StudentDao;
import it.dao.UserDao;import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;/*** @Author: Administrator* @Description:* @Date: 2024/11/9 下午4:20* @Version: 1.0*/
public class UserDaoImpl implements UserDao {/** 登录*/@Overridepublic int  login( String username, String password) {String sql = "select username,pwd from user where username=? and pwd=?";ResultSet resultSet = null;try {resultSet = jdbcUtil.executeQuery(sql, username, password);if (resultSet.next()) {return 0;} else {return 1;}} catch (SQLException e) {throw new RuntimeException(e);}}
/*注册*/@Overridepublic int  register(String username, String password) {String sql = "insert into user(username,pwd) values(?,?)";Date date = new Date(System.currentTimeMillis());int i = jdbcUtil.executeUpdate(sql, username, password);if (i > 0) {return 1;} else {return 0;}}
}

补充

1 你创建的实体类需要和数据库中建的表一一对应。

如下图所示:

数据库的字段类型实体类的属性数据类型
char/varchar/text[文本型]String
int [数值型]Integer
bigintLong
doubleDouble
decimalBigDecimal

实体包 entity: student  ,user 类

注意:数据库中 data/time/datetime 字段类型 ,对应在Java中有两种形式:

  •  Java.util.Date
  • java.sql.Date

但我们推荐使用Java.util.Date

原因

这里 存在向上转型:Java.util.Date 是java.sql.Date 的父类

总结

本篇博客,简单的介绍了DAO模式。但我认为这是远远不够的在之后的学习中,还无法理解其中的精髓。因此在之后的学习中,我会及时补充

关键字:网站搜索引擎推广方案_成都网站优化服务_手游推广渠道平台_百度云搜索引擎入口官网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: