目录

一、java+MySQL,java对数据库表进行增删改查任务前提:

要求一:创建lib文件夹

要求二:添加druid.properties

要求三:创建四个子文件夹

二、具体要求如下:

1、编写DbUtils类,连接数据库;

2、写一个实体类Product.java

3、写一个产品表数据访问类ProductDao.java

4、写一个测试类TestProDao.java

三、数据库表配置和java完整代码如下:

1、在MySQL数据库中,我创建的数据库,命名为mydata1

2、DbUtils.java连接数据库的类:

3、实体类Product.java

4、ProductDao.java包含增删改查的方法

5、TestProDao.java调用方法,对数据库表进行增删改查

四、运行结果

1、添加产品:

2、修改产品:

3、根据pro_Id查询一个产品:

4、查询所有产品,返回一个list列表:

5、删除产品


一、java+MySQL,java对数据库表进行增删改查任务前提:

要求一:创建lib文件夹

已在项目路径下,创建了一个lib文件夹,粘贴两个jar包:duruid-1.0.9.jar和mysql-connector-java-5.1.37-bin.jar;

并分别鼠标右键,选中add as library,添加到环境配置中;

要求二:添加druid.properties

在本项目的src目录下,粘贴druid.properties;

要求三:创建四个子文件夹

在本项目的src目录下创建四个文件夹,分别命名为com.qingruan.dao、com.qingruan.entity、com.qingruan.test、com.qingruan.util(com后面的是公司名,可替换):

文件夹下分别放相应功能的java文件,这样分工明确,不会混乱。

com.qingruan.dao:创建包含增删改查的方法的类,命名为:ProductDao.java

com.qingruan.entity:创建实体类,命名为:Product.java

com.qingruan.test:创建测试类,命名为:TestProDao.java

com.qingruan.util:创建java连接数据库的类,命名为:DbUtils.java

分割线————————————————————————————

二、具体要求如下:

1、编写DbUtils类,连接数据库;

java连接MySQL的具体讲解在上一篇。

2、写一个实体类Product.java

同时在MySQL创建产品表product,注意数据类型和属性要一致;在实体类应有三个私有属性:

产品序号pro_Id、产品名称pro_name、产品价格pro_price,其中pro_Id要设置为主键,并自增;

最后创建get/set方法;

3、写一个产品表数据访问类ProductDao.java

包含增删改查的方法:

(在这个类中先抛出异常,在测试类调用方法时,再进行try..catch...)

提示如下:

增加产品的方法:public int addProd(Product p)throws Exception;

删除产品的方法:public int delProd(int pro_Id) throws Exception;

修改产品的方法:public int updateProd(Product p)throws Exception;

查询所有产品的方法,并返回产品集合:public List selectAll() throws Exception;

根据pro_Id产品id查询单个产品的方法:public Product selectProdById(int id)throws Exception;

4、写一个测试类TestProDao.java

要求使用数据访问ProductDao.java中的增删改查方法,并测试打印结果。

分割线——————————————————————————

三、数据库表配置和java完整代码如下:

1、在MySQL数据库中,我创建的数据库,命名为mydata1

数据库下的表名为product;

表的配置如下:

2、DbUtils.java连接数据库的类:

我的MySQL的账号名为:root,密码为1234;(请根据自身情况,对以下代码进行改动)

package com.qingruan.util;


import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

// 针对数据库的连接作用
public class DbUtils {

	//定义私有成员
	private static  DataSource ds;

	//1.静态代码块 加载配置文件,初始化连接池对象
	static{     // 特点:用于给类进行初始化,只加载一次,随着类的加载而加载
		try {
			Properties pro =new Properties();
			//加载属性文件
			pro.load(DbUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
			//获得连接池对象
			ds = DruidDataSourceFactory.createDataSource(pro);
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



	//2.定义一个方法:获取连接对象
	public static Connection getConnection(){
		try {
			return  ds.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	//3.定义一个方法:用于释放资源
	public static void close(ResultSet rs,PreparedStatement ps,Connection cn){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(cn!=null){
			try {
				cn.close();  //  此时的关闭,是归还给连接池对象
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	/**
	 * 获得连接池的方法
	 * @return
	 */
	public static  DataSource getDataSource(){
		return ds;
	}

}

3、实体类Product.java

package com.qingruan.entity;

// 产品类 与 数据库中的product产品表是与之对应的
// 将数据库的产品表 看作是 java中的一个产品类   数据库中产品表的字段可以看作是 java中产品类的属性
public class Product {
    private Integer pro_Id;  //产品编号(给程序使用)
    private String pro_name; // 产品名称
    private Integer pro_price; // 产品价格
    public Product() {
        // TODO Auto-generated constructor stub
    }
    public Product( String pro_name, Integer pro_price) {
        this.pro_name = pro_name;
        this.pro_price = pro_price;
    }
    public Product(Integer pro_Id, String pro_name, Integer pro_price) {
        this.pro_Id = pro_Id;
        this.pro_name = pro_name;
        this.pro_price = pro_price;
    }
    @Override
    public String toString() {
        return "Product [pro_Id=" + pro_Id +  ", pro_name=" + pro_name + ", pro_price="
                + pro_price + "]";
    }
    public Integer getPro_Id() {
        return pro_Id;
    }
    public void setPro_Id(Integer pro_id) {
        this.pro_Id = pro_id;
    }
    public String getPro_name() {
        return pro_name;
    }
    public void setPro_name(String pro_name) {
        this.pro_name = pro_name;
    }
    public Integer getPro_price() {
        return pro_price;
    }
    public void setPro_price(Integer pro_price) {
        this.pro_price= pro_price;
    }
}

4、ProductDao.java包含增删改查的方法

package com.qingruan.test;

import com.qingruan.entity.Product;
import com.qingruan.util.DbUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

// dao  负责与数据库交互的,目前实现的技术是jdbc
public class ProductDao {
    private static PreparedStatement ps = null;
    private static Connection cn = null;
    private static ResultSet rs = null;

    /**
     * 添加产品
     *
     * @param p 需要传入的参数是产品对象
     * @return 返回受影响的行数
     */
    public int addProd(Product p) throws Exception { // 传入一个产品对象
        // 1.获得连接
        cn = DbUtils.getConnection();
        // 2.获得预处理对象
        String sql = "insert into product values(null,?,?)";
        ps = cn.prepareStatement(sql);
        // 3.赋予实际的参数
        ps.setString(1, p.getPro_name());
        ps.setInt(2, p.getPro_price());
        // 4.得到结果集
        int result1 =  ps.executeUpdate();
        DbUtils.close(null, ps, cn);// 5.释放资源
        return result1;
    }

    /**
     * 修改产品信息
     *
     * @param p 需要修改的产品信息
     * @return 返回受影响的行数
     */
    public int updateProd(Product p) throws Exception {
        cn = DbUtils.getConnection();
        String sql = "update product set pro_name=?,pro_price=?where pro_Id=?";
        ps = cn.prepareStatement(sql);
        ps.setString(1, p.getPro_name());
        ps.setInt(2, p.getPro_price());
        ps.setInt(3, p.getPro_Id());
        int result2 = ps.executeUpdate();
        DbUtils.close(null, ps, cn);
        return result2;
    }

    /**
     * 依据产品id删除产品信息
     *
     * @param pro_Id 需要删除的产品id
     * @return 返回受影响的行数
     */
    public int delProd(int pro_Id) throws Exception {
        cn = DbUtils.getConnection();
        String sql = "delete from product where pro_Id=?";
        ps = cn.prepareStatement(sql);
        ps.setInt(1, pro_Id);
        int result = ps.executeUpdate();
        return result;
    }

    /**
     * 依据产品id查询产品详细信息
     *
     * @param pro_Id 需要传入的产品编号
     * @return 返回产品信息
     */
    public Product selectProdById(int pro_Id) throws Exception {
        Product pro = null;
        cn = DbUtils.getConnection();
        String sql = "select * from product where pro_id=?";
        ps = cn.prepareStatement(sql);
        ps.setInt(1, pro_Id);
        rs = ps.executeQuery();
        if (rs.next()) {
            pro = new Product(rs.getInt(1), rs.getString(2),rs.getInt(3));
        }
        DbUtils.close(null, ps, cn);
        return pro;
    }

    /**
     * 查询产品列表
     *
     * @return 返回产品集合
     */
    public List selectAll() throws Exception{
        List<Product> list = new ArrayList<Product>();
        cn = DbUtils.getConnection();
        String sql = "select * from product";
        ps = cn.prepareStatement(sql);
        rs = ps.executeQuery();
        while (rs.next()) {
            list.add(new Product(rs.getInt(1), rs.getString(2),rs.getInt(3)));//放到集合中
        }
        return list;
    }
}



5、TestProDao.java调用方法,对数据库表进行增删改查

package com.qingruan.test;

import com.qingruan.entity.Product;
import org.junit.Test;

import java.util.List;

public class TestProDao {
    ProductDao dao =new ProductDao();
    //添加产品
    @Test
    public void save(){
        int result = 0;
        try {
            result = dao.addProd(new Product("苹果", 22));

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(result>0?"添加成功":"添加失败");
    }

    //单个查询
    @Test
    public void findById() {
        Product pro = null;
        try {
            pro = dao.selectProdById(1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(pro);
    }

    //查询所有
    @Test
    public void findAll(){
        List<Product> list = null;
        try {
            list = dao.selectAll();

        } catch (Exception e) {
            e.printStackTrace();
        }
        for(Product  pro : list){
            System.out.println(pro);
        }
    }

    //删除
    @Test
    public void delete(){
        int result = 0;
        try {
            result = dao.delProd(5);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(result > 0 ? "删除成功" : "删除失败");
    }

    //修改
    @Test
    public void update() {
        Product pro = null;
        int result2 = 0;
        try {
            pro = dao.selectProdById(2);
            pro.setPro_name("哇塞");
            result2 = dao.updateProd(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(result2 > 0 ? "删除成功" : "删除失败");
    }


}

四、运行结果

1、添加产品:

2、修改产品:

3、根据pro_Id查询一个产品:

4、查询所有产品,返回一个list列表:

5、删除产品

 

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐