创建数据库和表

sql语句:

DROP TABLE IF EXISTS product;
CREATE TABLE product(
product_id varchar(20) NOT NULL,
product_name varchar(50) DEFAULT NULL,
price decimal(6,2) DEFAULT NULL,
info varchar(100) DEFAULT NULL,
PRIMARY KEY(product_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

文件目录如下

Product.java

 package com.g.pojo;

 public class Product {
private String product_id;
private String product_name;
private double price;
private String info;
public String getProduct_id() {
return product_id;
}
public void setProduct_id(String product_id) {
this.product_id = product_id;
}
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
} }

ProductDao.java代码

 package com.g.dao;

 import java.util.List;

 import com.g.pojo.Product;

 public interface ProductDao {
/**
* 数据库 新增数据
* @param product 要增加的数据对象
* @return是否增加成功的标志
* @throws Exception 如果有异常,将直接抛出
*/
public boolean addProduct(Product product) throws Exception; /**
* 查询全部的Product
* @param product_name 产品名称
* @return返回全部的查询结果,每一个product对象表示表的一行记录
* @throws Exception 如果有异常,将直接抛出
*/
public List<Product> findAll(String product_name)throws Exception; /**
* 根据产品编号查询产品
* @param product_id 产品编号
* @return 产品对象
* @throws Exception 如果有异常,将直接抛出
*/
public Product findByProductId(String product_id)throws Exception; }

ProductService.java代码

 package com.g.service;

 import java.util.List;

 import com.g.dao.ProductDao;
import com.g.dao.ProductDaoImpl;
import com.g.db.DBConnection;
import com.g.pojo.Product; /**
* 操作数据库
* @author 思思博士
*
*/
public class ProductService implements ProductDao{ private DBConnection dbconn=null;
private ProductDao dao=null;
//在构造方法中实例化数据库连接,同时实例化dao对象
public ProductService() throws Exception{
this.dbconn=new DBConnection();
//实例化ProductDao的实现类
this.dao=new ProductDaoImpl(this.dbconn.getConnection());
}
public boolean addProduct(Product product) throws Exception {
boolean flag=false;
try{
if(this.dao.findByProductId(product.getProduct_id())==null){
//如果要插入的产品编号不存在
flag=this.dao.addProduct(product);//新增一条产品信息
}
}
catch (Exception e) {
throw e;
}finally{
this.dbconn.close();
} return flag;
} public List<Product> findAll(String keyWord) throws Exception {
List<Product> all=null; //定义产品返回的集合
try {
all=this.dao.findAll(keyWord);
} catch (Exception e) {
throw e;
}finally{
this.dbconn.close();
}
return all;
} public Product findByProductId(String product_id) throws Exception {
Product product=null;
try {
product=this.dao.findByProductId(product_id);
} catch (Exception e) {
throw e;
}finally{
this.dbconn.close();
}
return product;
}
}

DBConnection.java代码

 package com.g.db;

 import java.sql.Connection;
import java.sql.DriverManager; public class DBConnection {
private static final String Driver="com.mysql.jdbc.Driver";
private static final String Url="jdbc:mysql://127.0.0.1:3306/testweb";
private static final String User="root";
private static final String Password="gys";
private Connection conn=null; //进行数据库连接
public DBConnection() throws Exception{
try{
//用反射加载数据库驱动
Class.forName(Driver);
this.conn=DriverManager.getConnection(Url,User,Password);
}
catch (Exception e) {
throw e;
}
}
//取得数据库的连接
public Connection getConnection(){
return this.conn;
}
//关闭数据库
public void close() throws Exception{
if(this.conn!=null){
try {
this.conn.close(); } catch (Exception e) {
throw e;
}
}
} }

ProductDaoImpI.java代码

 package com.g.dao;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import com.g.pojo.Product; /**
* 实现DAO接口的类.但是不负责数据库的打开和关闭
* @author 思思博士
*
*/
public class ProductDaoImpl implements ProductDao{
private Connection conn=null;
private PreparedStatement pstmt=null;
//通过构造方法取得数据库连接
public ProductDaoImpl(Connection conn){
this.conn=conn;
}
public boolean addProduct(Product product) throws Exception {
boolean flag=false;
String sql="insert into product(product_id,product_name,price,info) values(?,?,?,?)";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,product.getProduct_id());
this.pstmt.setString(2,product.getProduct_name());
this.pstmt.setDouble(3,product.getPrice());
this.pstmt.setString(4,product.getInfo()); if(this.pstmt.executeUpdate()>0){
flag=true;
}
this.pstmt.close();
return flag;
} public List<Product> findAll(String product_name) throws Exception {
List<Product> list=new ArrayList<Product>();
String sql="select product_id,product_name,price,info from product";
if(product_name!=null&&!"".equals(product_name)){
sql="select product_id,product_name,price,info from product where product_name like ?";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,"%"+product_name+"%");
}
else {
this.pstmt=this.conn.prepareStatement(sql);
}
ResultSet rs=this.pstmt.executeQuery();
Product product=null;
while(rs.next()){
product=new Product();
product.setProduct_id(rs.getString(1));
product.setProduct_name(rs.getString(2));
product.setPrice(rs.getDouble(3));
product.setInfo(rs.getString(4));
list.add(product);
}
this.pstmt.close();
return list;
} public Product findByProductId(String product_id) throws Exception {
Product product=null;
String sql="select product_id,product_name,price,info from product where product_id=?";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,product_id);
ResultSet rs=this.pstmt.executeQuery();
if(rs.next()){
product=new Product();
product.setProduct_id(rs.getString(1));
product.setProduct_name(rs.getString(2));
product.setPrice(rs.getDouble(3));
product.setInfo(rs.getString(4));
}
this.pstmt.close();
return product;
} }

DAOFactory.java代码

 package com.g.factory;

 import com.g.dao.ProductDao;
import com.g.service.ProductService; public class DAOFactory {
public static ProductDao getIEmpDAOInstance() throws Exception{
//取得业务操作类
return new ProductService();
}
}

TestInsertProduct.java代码

 package com.g.test;

 import com.g.factory.DAOFactory;
import com.g.pojo.Product; public class TestInsertProduct {
public static void main(String[] args) {
Product product=null;
try {
for(int i=0;i<5;i++){
product=new Product();
product.setProduct_id("350115001010"+i);
product.setProduct_name("水杯"+i);
product.setPrice(100+i);
product.setInfo("这是一个精美的杯子"+i);
DAOFactory.getIEmpDAOInstance().addProduct(product);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

add.jsp代码

 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>添加产品</title>
</head> <body>
<form action="insert.jsp" method="post">
产品编号:<input name="product_id" /><br/>
产品名称:<input name="product_name" /><br />
产品价格:<input name="price" /><br/>
产品信息:<textarea rows="5" cols="15" name="info"></textarea><br/>
<input type="submit" value="添加" />&nbsp;&nbsp;
<input type="reset" value="重置" />
</form>
</body>
</html>

insert.jsp代码

 <%@page import="com.g.factory.DAOFactory"%>
<%@page import="com.g.pojo.Product"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <%
request.setCharacterEncoding("utf-8");
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>执行添加产品</title>
</head> <body>
<%
Product product=new Product();
product.setProduct_id(request.getParameter("product_id"));
product.setProduct_name(request.getParameter("product_name"));
product.setPrice(Double.parseDouble(request.getParameter("price")));
product.setInfo(request.getParameter("info"));
boolean flag=DAOFactory.getIEmpDAOInstance().addProduct(product);//执行添加操作
if(flag){
%>
<h4>添加产品信息成功</h4>
<%}else{%>
<h4>添加产品信息失败.</h4>
<%} %>
</body>
</html>

list.jsp代码

 <%@page import="com.g.factory.DAOFactory"%>
<%@page import="com.g.pojo.Product"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>查询产品列表</title>
</head> <body>
<%
String product_name=request.getParameter("product_name");
if(product_name==null)
product_name="";
List<Product> list=DAOFactory.getIEmpDAOInstance().findAll(product_name);
%>
<form action="list.jsp" method="post">
请输入产品名称:<input name="product_name" value="<%=product_name %>"/>
<input type="submit" value="提交" />
</form>
<table>
<tr>
<td>产品编号</td>
<td>产品名称</td>
<td>产品价格</td>
<td>产品信息</td>
</tr>
<%
for(int i=0;i<list.size();i++){
Product p=list.get(i);//取出每一个产品
%>
<tr>
<td><%=p.getProduct_id() %></td>
<td><%=p.getProduct_name() %></td>
<td><%=p.getPrice() %></td>
<td><%=p.getInfo() %></td>
</tr>
<%}%> </table>
</body>
</html>

java中的DAO设计模式的更多相关文章

  1. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

  2. [ 转载 ] Java中常用的设计模式

    Java中常用的设计模式 1.单例模式 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 单例模式确保某个类只有一个 ...

  3. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  4. Java中常用的设计模式代码与理解

    Java中常用的设计模式代码与理解 一.单例模式 1.饿汉式 (太饿了,类加载的时候就创建实例) /** * 饿汉式单例模式 */ public class HungrySingleInstance ...

  5. Java学习之DAO设计模式

    DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...

  6. java中的dao模式

    java中Dao模式   什么是DAO   1.Data Access Object(数据存取对象) 2.位于业务逻辑和持久化数据之间 3.实现对持久化数据的访问 DAO模式的作用 1隔离业务逻辑代码 ...

  7. Java中23种设计模式(附代码样例)

    一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  8. java中的策略设计模式

    本文主要讲java中的策略模式:一个可以根据不同的传入参数而具有不同行为的方法,就叫策略模式.概念可能有点不好理解,具体看下面代码: import java.util.Arrays; /** * 策略 ...

  9. Java中23种设计模式--超快速入门及举例代码

    在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录. 原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注: ...

随机推荐

  1. Jmeter界面总是有warning提示

    要用Jmeter测试服务器性能,发现GUI界面总是有warning提示: WARNING: Could not open/create prefs root node Software\JavaSof ...

  2. python 进制转换

    print hex(),hex(-) #转换成十六进制 print oct(),oct(-) #转换成八进制 print bin(),bin(-) #转换成二进制 print int("字面 ...

  3. install ros-indigo-tf

    sudo apt-get install ros-indigo-tf

  4. taglist-plus 安装使用

    taglist 可以查看文件中的 类,函数,变量等信息. 在.vimrc中添加: Plugin 'taglist-plus' 然后打开vim编辑器 PluginInstall 使用: 打开taglis ...

  5. [osg][osgearth]osg的分页加载,代码和结构图

    DatabasePager加载数据的过程: 多线程 使用DatabasePager加载数据的流程: 左侧的图框表示数据的检索和输入, 中间的白色框表示用于数据存储的内存空间,而右边的图框表示存储数据的 ...

  6. 矩阵快速幂——POJ3070

    矩阵快速幂和普通的快速幂差不多,只不过写起来比较麻烦一点,需要重载*运算符. 模板: struct mat { int m[maxn][maxn]; }unit; mat operator * (ma ...

  7. SGU 138. Games of Chess 构造 难度:2

    138. Games of Chess time limit per test: 0.25 sec. memory limit per test: 4096 KB N friends gathered ...

  8. C++设计模式之职责链模式

    代码实现: // chainResbonsibility.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stri ...

  9. BigDecimal 、BigInteger

    package com.BigDecimal; public class BigDecimalDemo { /* * 下面的运算的结果出乎我们的意料,有些准确,有些不准确 * 这是为什么呢? * 我们 ...

  10. css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的

    <ul class="skin"> <li id="skin_0" title="蓝色" class="sele ...