第七章 DAO模式

本文档介绍如何使用DAO(Data Access Object)模式来开发一个车辆购置税记录程序。通过DAO模式,可以有效地将业务逻辑与数据访问操作分离,提高代码的可维护性和可测试性。
摘要由CSDN通过智能技术生成

1,开发一个程序,用于记录车辆购置税

package com.zuoye.demo;

/**
 * 实体类车辆信息
 * 
 * @author 66479
 *
 */
public class Car {
	private String Owneridentitycard;// 车主身份证号码
	private String Vehicleidentificationcode;// 车辆识别号码
	private double displacement;// 车辆排量
	private double Officialguidanceprice;// 官方指导价
	private double Invoiceprice;// 发票价格
	private int Purchasetax;// 车辆购置税

	public String getOwneridentitycard() {
		return Owneridentitycard;
	}

	public void setOwneridentitycard(String owneridentitycard) {
		Owneridentitycard = owneridentitycard;
	}

	public String getVehicleidentificationcode() {
		return Vehicleidentificationcode;
	}

	public void setVehicleidentificationcode(String vehicleidentificationcode) {
		Vehicleidentificationcode = vehicleidentificationcode;
	}

	public double getDisplacement() {
		return displacement;
	}

	public void setDisplacement(double displacement) {
		this.displacement = displacement;
	}

	public double getOfficialguidanceprice() {
		return Officialguidanceprice;
	}

	public void setOfficialguidanceprice(Double officialguidanceprice) {
		Officialguidanceprice = officialguidanceprice;
	}

	public double getInvoiceprice() {
		return Invoiceprice;
	}

	public void setInvoiceprice(Double invoiceprice) {
		Invoiceprice = invoiceprice;
	}

	public int getPurchasetax() {
		return Purchasetax;
	}

	public void setPurchasetax(int purchasetax) {
		Purchasetax = purchasetax;
	}

}
package com.zuoye.demo;
/**
 * 车的接口
 * @author 66479
 *
 */
public interface CarDao {
	  int add(Car car);
}
package com.zuoye.demo;
/**
 * 接口实现类
 * @author 66479
 *
 */
public class carDAOlImpl extends BaseDao implements CarDao{
	public int add(Car car) {
		String sql="insert into car (Owneridentitycard,Vehicleidentificationcode,displacement,Officialguidanceprice,Invoiceprice,Purchasetax)VALUES(?,?,?,?,?,?)";
		int num = executeUpdate(sql, car.getOwneridentitycard(),car.getVehicleidentificationcode(),car.getDisplacement(),car.getOfficialguidanceprice(),car.getInvoiceprice(),car.getPurchasetax());
		return num;
	}
}
package com.zuoye.demo;

import java.io.IOException;
	import java.io.InputStream;
	import java.sql.Connection;
	import java.sql.DriverManager;
	import java.sql.PreparedStatement;
	import java.sql.ResultSet;
	import java.sql.SQLException;
	import java.util.Properties;
/**
 * 工具类
 * @author 66479
 *
 */
	public class BaseDao {
	    private static String driver;
	    private static String url;
	    private static String user;
	    private static String password;
	    Connection conn = null;
	    PreparedStatement stmt=null;
	    
	    static {
	    	into();
	    }
	    public static void into() {
	    	Properties prarms=new Properties();
	    	String config="database.properties";
	    	InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(config);
	    	try {
				prarms.load(is);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	driver=prarms.getProperty("driver");
	    	url=prarms.getProperty("url");
	    	user=prarms.getProperty("userName");
	    	password=prarms.getProperty("password");
	    	
	    	
	    }
	    
	    public Connection getConnection() {
	    	try {
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	try {
	    		conn=DriverManager.getConnection(url,user,password);
	    		return conn;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	return null;
	    }
	    
	    	public void closeAll(Connection connection,PreparedStatement stmt,ResultSet rs) {
	    		if(rs!=null) {
	    			try {
	    				rs.close();
	    			} catch (SQLException e) {
	    				// TODO Auto-generated catch block
	    				e.printStackTrace();
	    			}
	    		}
	    		if(stmt!=null) {
	    			try {
	    				stmt.close();
	    			} catch (SQLException e) {
	    				// TODO Auto-generated catch block
	    				e.printStackTrace();
	    			}
	    		}
	    		if(conn!=null) {
	    			try {
	    				conn.close();
	    			} catch (SQLException e) {
	    				// TODO Auto-generated catch block
	    				e.printStackTrace();
	    			}
	    		}
	    	}
	    	
	    	public int executeUpdate(String sql,Object...param) {
	    		int num=0;//执行行数
	    		conn=getConnection();
	    		try {
	    			stmt=conn.prepareStatement(sql);
	    			//为参数赋值
	    			if(param!=null) {
	    				for(int i=0;i<param.length;i++) {
	    					stmt.setObject(i+1,param[i]); 
	    				}
	    			}
	    			//执行sql语句
	    			num=stmt.executeUpdate();
	    		} catch (SQLException e) {
	    			// TODO Auto-generated catch block
	    			e.printStackTrace();
	    		}finally {
	    			this.closeAll(conn, stmt, null);
	    		}
	    		return num;
	    	}

	    }
package com.zuoye.demo;
import java.util.Scanner;
/**
 * 测试类
 * @author 66479
 *
 */
public class Test {
   public static void main(String[] args) {
	   Scanner in=new Scanner(System.in);
	   CarDao cardao=new carDAOlImpl();
	   Car car=new Car();
	  System.out.println("记录车辆购置税,请按提示录入相关信息:");
	  System.out.print("请输入车主身份证号码(18位):");
	  String Owneridentitycard=in.next();
	  System.out.print("请输入车辆识别码(17位):");
	  String Vehicleidentificationcode=in.next();
	  System.out.print("请输入车排量:");
	  double displacement=in.nextDouble();
	  System.out.print("请输入官方指导价:");
	  double Officialguidanceprice=in.nextDouble();
	  System.out.print("请输入发票价格:");
	  double Invoiceprice=in.nextDouble();
	  int Purchasetax=0;
	  if(displacement>1.6) {
		  Purchasetax=(int) ((Invoiceprice/(1+0.17))*0.1);
	  }else {
		  Purchasetax=(int) ((Invoiceprice/(1+0.17))*0.75);
	  }
	    car.setOwneridentitycard(Owneridentitycard);
		car.setVehicleidentificationcode(Vehicleidentificationcode);
		car.setDisplacement(displacement);
		car.setOfficialguidanceprice(Officialguidanceprice);
		car.setInvoiceprice(Invoiceprice);
		car.setPurchasetax(Purchasetax);
		cardao.add(car);
		System.out.println("数据保存成功,车辆购置税为"+Purchasetax);
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值