`

一个简单的DAO例子

阅读更多

    第一次写博客,总感觉怪怪的,可能是我语文考试时作文老是写一半吧,所以,有点小紧张是在所难免的哈,当然,火眼金睛的各位可不要手下留情哦,欢迎纠正这篇菜鸟文章的错误~有你的支持,才是我们程序菜鸟员的动力!     

     此例子呢只是做一个简单的注册和查询,

 

开发工具: MyEclipse 8.6

数据库:MySQL

(例子尽在下载解压缩中…)

 

 

 

 

MySQL数据库设计

 


 

 

 

 

项目名MyDAO

 

类的命名:(小提示,包和类的命名需要规范哦)

dao接口类

factory工厂

impl真实

proxy代理

数据库连接类

JUnit测试类

vo: Myemp.java

引用的驱动: 数据库连接驱动包mysql-connector-java-5.1.18-bin.jar

 

 

 

 

接下来的会通过一个小故事将代码呈现:vo-原料  数据库-原料商 DAO接口-师傅 Impl-dao的徒弟 Proxy-小代理 JUnit-dao一族的死党 

 

 


一,创建VO: 一大堆原料

 

package org.yzsoft.demo.vo;

 

public class Myemp {

    private int id;         //标识

    private String username;//用户名

    private String password;//密码

    /* 以下为Get Set访问 */

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    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;

    }

}

 

 

二,

 

 

 

 

 

 

 

数据库连接类:这批货(原料)怎么推销出去呢? 货物积存了可不妙啊

 

package org.yzsoft.demo.util;

 

import java.sql.Connection;

import java.sql.DriverManager;

 

public class DatabaseConnection {

    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";

    private static final String DBURL = "jdbc:mysql://localhost:3306/hxl";// 数据库地址

    private static final String DBUSER = "root";

    private static final String DBPASSWORD = "admin";

    private Connection conn = null;

 

    public DatabaseConnection() throws Exception {

       Class.forName(DBDRIVER); // 加载驱动

       this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);// 连接数据库

    }

 

    public Connection getConnection() {

       return this.conn;// 取连接

    }

 

    public void close() throws Exception {// 数据库关闭操作

       if (this.conn != null) {

           try {

              this.conn.close();

           } catch (Exception e) {

              throw e;

           }

       }

    }

}

 

 

DAO接口-师傅:技术我有,Impl这小子学不学得精,那就要看他的造化了

 

package org.yzsoft.demo.dao;

 

 

import java.util.List;

import org.yzsoft.demo.vo.Myemp;

 

public interface IMyempDAO {

    /**

     * 数据的增加操作

     * @param emp 要增加的对象

     * @return 是否增加成功的标记

     * @throws Exception 异常交给被调用处处理

     */

    public boolean doCreate(Myemp emp) throws Exception ;

    /**

     * 根据关键字查询数据

     * @param  keyWord 查询条件

     * @return 查询到的数据集合

     * @throws Exception 异常交给被调用处处理

     */

    public List<Myemp> findAll(String keyWord) throws Exception ;

}

 

 

 

 

四,真实类-DAOImpl小子: 我要努力学习印刷术,不过我得采购些原料,去哪找呢?印刷不能停,可这样一来没时间去做其它事情了呀

 

 

 

 

 

package org.yzsoft.demo.impl;

 

import java.util.*;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

 

import org.yzsoft.demo.dao.IMyempDAO;

import org.yzsoft.demo.vo.Myemp;

 

 

public class MyempDAOImpl implements IMyempDAO {

    private Connection conn = null;

    private PreparedStatement pstmt = null;

 

    public MyempDAOImpl(Connection conn) {//构造方法取得与数据库连接

       this.conn = conn;

    }

 

    public boolean doCreate(Myemp emp) throws Exception {

       boolean flag = false;

       String sql = "INSERT INTO myemp(username,password) VALUES (?,?)"; //SQL插入语句

       this.pstmt = this.conn.prepareStatement(sql);                     //预编译

       this.pstmt.setString(1, emp.getUsername());                       //设置用户名

       this.pstmt.setString(2, emp.getPassword());                       //设置密码

       if (this.pstmt.executeUpdate() > 0) { //如果有更新记录 标记为true

           flag = true;

       }

       this.pstmt.close();  //关闭打开的操作

       return flag;

    }

 

    public List<Myemp> findAll(String keyWord) throws Exception {

       List<Myemp> all = new ArrayList<Myemp>();     //定义集合接收数据

       String sql = "SELECT id,username,password FROM myemp WHERE username LIKE ? OR password LIKE ?"; //SQL查询语句

       this.pstmt = this.conn.prepareStatement(sql); //预编译

       this.pstmt.setString(1, "%" + keyWord + "%"); //设置用户名 模糊查询

       this.pstmt.setString(2, "%" + keyWord + "%"); //设置密码 模糊查询

       ResultSet rs = this.pstmt.executeQuery();     //接收数据

       Myemp emp = null;

       while (rs.next()) {  //依次将数据就存入VO,向集合增加

           emp = new Myemp();

           emp.setId(rs.getInt(1));

           emp.setUsername(rs.getString(2));

           emp.setPassword(rs.getString(3));

           all.add(emp);

       }

       this.pstmt.close();  //关闭打开的操作

       return all;          //返回结果

    }

}

 

 

 

代理类-小代理Proxy:Impl这家伙呆呆的,就知道钻研技术,生意上的事还是由我来帮他搞定吧!

 

package org.yzsoft.demo.proxy;

 

import java.util.*;

 

import org.yzsoft.demo.dao.IMyempDAO;

import org.yzsoft.demo.impl.MyempDAOImpl;

import org.yzsoft.demo.util.DatabaseConnection;

import org.yzsoft.demo.vo.Myemp;

 

public class MyempDAOProxy implements IMyempDAO {

    private DatabaseConnection dbc = null; //定义数据库连接类

    private IMyempDAO dao = null;          //声明DAO

 

    public MyempDAOProxy() throws Exception {//构造方法中实例化连接与实例化DAO对象

       this.dbc = new DatabaseConnection();  //连接数据库

       this.dao = new MyempDAOImpl(this.dbc.getConnection());//实例化真实类

    }

 

    public boolean doCreate(Myemp emp) throws Exception {

       boolean flag = false;

       try {

           flag = this.dao.doCreate(emp);   //调用真实类的doCreate方法

       } catch (Exception e) {

           throw e;

       } finally {

           this.dbc.close();                //关闭数据库连接

       }

       return flag;

    }

 

    public List<Myemp> findAll(String keyWord) throws Exception {

       List<Myemp> all = null;

       try {

           all = this.dao.findAll(keyWord); //调用真实类的findAll方法

       } catch (Exception e) {

           throw e;

       } finally {

           this.dbc.close();                //关闭数据库连接

       }

       return all;

    }

}

DAO代理类:不过,该怎么吸引更多的客户呢? ,打个广告怎样,这样,通过广告就可以吸引好多人

 

 

 

六,工厂类-广告! //

 

package org.yzsoft.demo.factory;

 

import org.yzsoft.demo.dao.IMyempDAO;

import org.yzsoft.demo.proxy.MyempDAOProxy;

 

public class DAOFactory {

    public static IMyempDAO getIEmpDAOInstance() throws Exception { //取得DAO接口实例

       return new MyempDAOProxy(); //取得代理类的实例

    }

}


 

 

 

客户上门咯(注册的JSP页面)

  

page contentType="text/html" pageEncoding="UTF-8"%>

<html>

<head><title>This is DAO demo</title></head>

<body>

<form action="insert_do.jsp" method="post">

    用户:<input type="text" name="username"><br>

    密码:<input type="text" name="password"><br>

    <input type="submit" value="注册">

    <input type="reset" value="重置">

</form>

</body>

</html>


 

 

 

恰谈中(注册检查的JSP页面)

 

 

 

 

 

<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%@ page import="java.text.*"%>

<%@page import="org.yzsoft.demo.vo.Myemp"%>

<%@page import="org.yzsoft.demo.factory.DAOFactory"%>

<html>

<head><title>This is DAO demo check</title></head>

<%  request.setCharacterEncoding("UTF-8"); %>

<body>

<%

    Myemp emp = new Myemp() ;

    emp.setUsername(request.getParameter("username")) ;

    emp.setPassword(request.getParameter("password")) ;

try{

    if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){

%>

       <h3>注册成功!</h3>

<%

    } else {

%>

       <h3>注册失败!</h3>

<%

    }

%>

<%

}catch(Exception e){

    e.printStackTrace() ;

}

%>

</body>

</html>

 

 

 

 

合作愉快(查询的结果页)

 

<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%@ page import="java.util.*"%>

<%@page import="org.yzsoft.demo.vo.Myemp"%>

<%@page import="org.yzsoft.demo.factory.DAOFactory"%>

<html>

<head><title>This is DAO demo list</title></head>

<%  request.setCharacterEncoding("UTF-8") ;   %>

<body>

<%

    String keyWord = request.getParameter("keyword") ;

    if(keyWord == null){

       keyWord = "" ;    // 如果没有查询关键字,则查询全部

    }

    List<Myemp> all = DAOFactory.getIEmpDAOInstance().findAll(keyWord) ;

    Iterator<Myemp> iter = all.iterator() ;

%>

<center>

<form action="list.jsp" method="post">

    请输入查询关键字:<input type="text" name="keyword">

    <input type="submit" value="查询">

</form>

<table border="1" width="70%">

    <tr>

       <td>序号</td>

       <td>用户名</td>

       <td>密码</td>

    </tr>

<%

    while(iter.hasNext()){

       Myemp emp = iter.next() ;

%>

    <tr>

       <td><%=emp.getId()%></td>

       <td><%=emp.getUsername()%></td>

       <td><%=emp.getPassword()%></td>

    </tr>

<%

    }

%>

</table>

</center>

</body>

</html>


 

 

以上就是一个简单的dao小例子,


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 11.4 KB
  • 大小: 17.8 KB
  • 大小: 100.2 KB
  • 大小: 7.8 KB
  • 大小: 5 KB
  • 大小: 22.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    struts+DAO登陆例子

    "Struts+DAO登陆例子"是一个典型的Java Web应用开发示例,它展示了如何使用Struts框架来处理用户请求,以及如何利用DAO模式进行数据访问。这个示例可以帮助初学者理解这两个概念在实际项目中的应用,同时也为更复杂...

    DAOmvc 简单例子

    总结起来,"DAOmvc 简单例子"是一个演示如何使用DAO模式与MVC架构相结合来处理用户数据的实例。通过这种设计,我们可以将数据访问操作与业务逻辑分离,使代码更易于测试、维护和扩展。在实际项目中,还可以结合其他...

    hibernate的第一个例子

    **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象(通常是Java类,对应数据库中的表)、一个辅助类(可能是配置或者工具类,帮助操作数据库)以及一个测试类(用于验证代码功能)。这个例子特别...

    VC DAO 操作Access的测试例子.rar

    VC DAO 操作Access的测试例子,本演示是VC 使用DAO连接Access数据库的一个测试程序,学习如何使用DAO操作Access,通过添加一个数据库记录来演示添加、删除、插入数据的例子,比较简单,面向VC 初学者的一个例子。...

    java数据库备份与恢复小例子(DAO)

    这个"java数据库备份与恢复小例子(DAO)"是一个实用的示例,它展示了如何利用DAO(Data Access Object)模式来实现这些功能。DAO模式是一种常用的设计模式,用于将业务逻辑层与数据访问层解耦,提高代码的可维护性...

    一个ssh最简单整合的例子,很多地方都没有作

    在这个例子中,我们关注的是一个简单的SSH整合应用,它可能旨在展示如何将这三个框架的基础功能组合起来。 Spring框架是核心,负责管理对象(依赖注入DI)和事务处理。它提供了一个统一的入口点,可以方便地注入...

    简单的springmvc例子

    在这个简单的例子中,可能包含了一个名为 "flowers" 的示例项目。它可能展示了如何创建一个处理花卉相关请求的 Controller,例如列出所有花卉、添加新花卉等操作。每个操作对应 Controller 中的一个方法,方法通过 ...

    spring 的简单例子工程适合初学者

    在这个例子中,可能包含了一个简单的控制器(Controller),用于处理 HTTP 请求,并通过 Service 层与 DAO 层交互,最终返回响应数据。控制器通常会使用 ModelMapper 将数据库查询结果转换为视图模型,然后转发到...

    Spring+SpringMVC的一个简单登录例子(参考用户ldhsecret)

    本示例将深入讲解如何结合Spring和SpringMVC实现一个简单的登录功能。参考了用户ldhsecret的分享,我们已经对原有代码进行了调整,确保在Eclipse环境中可以直接运行。 首先,了解Spring框架。Spring是一个开源的...

    一个spring例子

    在"一个spring例子"中,可能包含了一个简单的Spring MVC应用,这是Spring框架提供的Web层解决方案。Spring MVC提供了一种模型-视图-控制器(Model-View-Controller)架构,用于处理HTTP请求、路由到相应的处理器方法...

    SSH整合一个简单的例子

    首先,**Spring框架** 是一个全面的后端应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能。在SSH整合中,Spring主要负责控制层和业务层的管理,如...

    几个基于mvc架构的小例子

    总结来说,这个项目提供了一个简单的MVC架构示例,展示了如何使用JSF、Servlet和DAO来实现一个用户登录系统。通过这样的实践,开发者可以更好地理解MVC模式在实际开发中的应用,以及各组件间的协作方式,从而提升Web...

    Spring+ibatis+Dhtmlx+dwr一个简单的例子

    这个“Spring+ibatis+Dhtmlx+dwr一个简单的例子”提供了使用这些技术进行集成的实例,这对于初学者来说是一份宝贵的参考资料。下面将详细解释这些技术及其在项目中的作用。 1. **Spring**:Spring 是一个开源的Java...

    hibernate+spring+struts一个简单例子

    这个例子展示了如何将Hibernate、Spring和Struts三大框架整合,实现一个完整的MVC架构的Web应用。这样的整合不仅简化了开发流程,也提高了代码的可维护性和复用性。在实际开发中,开发者可以根据项目需求进一步扩展...

    JSP+Servlet+JDBC做的一个简单的例子。新手可以学习。

    这个简单的例子对于初学者来说是一个很好的实践项目,涵盖了Web开发的基本元素,有助于理解和掌握JSP、Servlet和JDBC的联合使用。通过分析和实践这个项目,学习者可以提升自己在Java Web开发方面的技能。

    DAO开发模式介绍.......

    DAO(Data Access Object)开发模式是一种常见的软件设计模式,它主要用于隔离业务逻辑层...不过,在没有使用Spring等框架的情况下,可以自行设计一个简单的IOC容器来管理DAO的创建和事务处理,如上述例子中的DAO工厂。

    Spring例子

    在Spring MVC中,Controller通常是一个简单的Java类,使用了`@Controller`注解来标识。它包含了处理HTTP请求的方法,这些方法通常使用`@RequestMapping`注解来定义请求映射。例如,一个处理获取医院叫号信息的请求的...

    ssh框架简单例子带有解释

    这对于初学者来说是一个很好的起点,能够帮助他们快速入门Java Web开发,并为更复杂的项目打下坚实的基础。 总的来说,SSH框架结合了Struts2的优秀表现层管理、Spring的强大中间件服务以及Hibernate的便捷持久层...

    maven整合ssm简单的例子

    SSM(Spring、SpringMVC、MyBatis)框架整合...总之,这个"Maven整合SSM简单的例子"为初学者提供了一个良好的实践平台,通过实际操作,可以加深对SSM框架以及Maven工具的理解,有助于快速掌握Java Web开发的基本技能。

Global site tag (gtag.js) - Google Analytics