第一次写博客,总感觉怪怪的,可能是我语文考试时作文老是写一半吧,所以,有点小紧张是在所难免的哈,当然,火眼金睛的各位可不要手下留情哦,欢迎纠正这篇菜鸟文章的错误~有你的支持,才是我们程序菜鸟员的动力!
此例子呢只是做一个简单的注册和查询,
开发工具: 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登陆例子"是一个典型的Java Web应用开发示例,它展示了如何使用Struts框架来处理用户请求,以及如何利用DAO模式进行数据访问。这个示例可以帮助初学者理解这两个概念在实际项目中的应用,同时也为更复杂...
总结起来,"DAOmvc 简单例子"是一个演示如何使用DAO模式与MVC架构相结合来处理用户数据的实例。通过这种设计,我们可以将数据访问操作与业务逻辑分离,使代码更易于测试、维护和扩展。在实际项目中,还可以结合其他...
**描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象(通常是Java类,对应数据库中的表)、一个辅助类(可能是配置或者工具类,帮助操作数据库)以及一个测试类(用于验证代码功能)。这个例子特别...
VC DAO 操作Access的测试例子,本演示是VC 使用DAO连接Access数据库的一个测试程序,学习如何使用DAO操作Access,通过添加一个数据库记录来演示添加、删除、插入数据的例子,比较简单,面向VC 初学者的一个例子。...
这个"java数据库备份与恢复小例子(DAO)"是一个实用的示例,它展示了如何利用DAO(Data Access Object)模式来实现这些功能。DAO模式是一种常用的设计模式,用于将业务逻辑层与数据访问层解耦,提高代码的可维护性...
在这个例子中,我们关注的是一个简单的SSH整合应用,它可能旨在展示如何将这三个框架的基础功能组合起来。 Spring框架是核心,负责管理对象(依赖注入DI)和事务处理。它提供了一个统一的入口点,可以方便地注入...
在这个简单的例子中,可能包含了一个名为 "flowers" 的示例项目。它可能展示了如何创建一个处理花卉相关请求的 Controller,例如列出所有花卉、添加新花卉等操作。每个操作对应 Controller 中的一个方法,方法通过 ...
在这个例子中,可能包含了一个简单的控制器(Controller),用于处理 HTTP 请求,并通过 Service 层与 DAO 层交互,最终返回响应数据。控制器通常会使用 ModelMapper 将数据库查询结果转换为视图模型,然后转发到...
本示例将深入讲解如何结合Spring和SpringMVC实现一个简单的登录功能。参考了用户ldhsecret的分享,我们已经对原有代码进行了调整,确保在Eclipse环境中可以直接运行。 首先,了解Spring框架。Spring是一个开源的...
在"一个spring例子"中,可能包含了一个简单的Spring MVC应用,这是Spring框架提供的Web层解决方案。Spring MVC提供了一种模型-视图-控制器(Model-View-Controller)架构,用于处理HTTP请求、路由到相应的处理器方法...
首先,**Spring框架** 是一个全面的后端应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能。在SSH整合中,Spring主要负责控制层和业务层的管理,如...
总结来说,这个项目提供了一个简单的MVC架构示例,展示了如何使用JSF、Servlet和DAO来实现一个用户登录系统。通过这样的实践,开发者可以更好地理解MVC模式在实际开发中的应用,以及各组件间的协作方式,从而提升Web...
这个“Spring+ibatis+Dhtmlx+dwr一个简单的例子”提供了使用这些技术进行集成的实例,这对于初学者来说是一份宝贵的参考资料。下面将详细解释这些技术及其在项目中的作用。 1. **Spring**:Spring 是一个开源的Java...
这个例子展示了如何将Hibernate、Spring和Struts三大框架整合,实现一个完整的MVC架构的Web应用。这样的整合不仅简化了开发流程,也提高了代码的可维护性和复用性。在实际开发中,开发者可以根据项目需求进一步扩展...
这个简单的例子对于初学者来说是一个很好的实践项目,涵盖了Web开发的基本元素,有助于理解和掌握JSP、Servlet和JDBC的联合使用。通过分析和实践这个项目,学习者可以提升自己在Java Web开发方面的技能。
DAO(Data Access Object)开发模式是一种常见的软件设计模式,它主要用于隔离业务逻辑层...不过,在没有使用Spring等框架的情况下,可以自行设计一个简单的IOC容器来管理DAO的创建和事务处理,如上述例子中的DAO工厂。
在Spring MVC中,Controller通常是一个简单的Java类,使用了`@Controller`注解来标识。它包含了处理HTTP请求的方法,这些方法通常使用`@RequestMapping`注解来定义请求映射。例如,一个处理获取医院叫号信息的请求的...
这对于初学者来说是一个很好的起点,能够帮助他们快速入门Java Web开发,并为更复杂的项目打下坚实的基础。 总的来说,SSH框架结合了Struts2的优秀表现层管理、Spring的强大中间件服务以及Hibernate的便捷持久层...
SSM(Spring、SpringMVC、MyBatis)框架整合...总之,这个"Maven整合SSM简单的例子"为初学者提供了一个良好的实践平台,通过实际操作,可以加深对SSM框架以及Maven工具的理解,有助于快速掌握Java Web开发的基本技能。