封装 查询 增删改 连接数据库的封装 对象的封装

封装

BaseDao

传参数,数量、类型不固定怎么办?

public class TestMethod {
	//第一种,方法的重载
	/*public int sum(int a) {
		return a;
	}
	public int sum(int a,int b) {
		return a+b;
	}
	public int sum(int a,int b,int c) {
		return a+b+c;
	}*/
	
	//方法2,放入一个数组
	/*public int sum(int [] arr) {
		int s=0;
		for(int i:arr) {
			s+=i;
		}
		return s;
	}
	public static void main(String[] args) {
		int [] arr= {12,23};
		new TestMethod().sum(arr);
	}*/
	
	//方法3,可变长度的参数
	//一个方法中只能有一个可变长度参数
	//可变长度参数只能放在最后一个位置
	public int sum(int ...arr) {
		int s=0;
		for(int i:arr) {
			s+=i;
		}
		return s;
	}
	public static void main(String[] args) {
		new TestMethod().sum();
		new TestMethod().sum(100);
		new TestMethod().sum(100,200);
	}
}

数据库的封装

数据库连接封装

public Connection getConnection() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@//localhost:1521/ORCL";
			String user = "scott";
			String password = "123";
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			throw new RuntimeException("数据库驱动不见了");
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("连接失败"+e.getMessage());
		}
	}

增删改的封装

public static void main(String[] args) throws SQLException {		
		Scanner input=new Scanner(System.in);
		System.out.println("员工号");
		int empno=input.nextInt();
		System.out.println("工资");
		int sal=input.nextInt();
		String sql="update emp set sal=sal+? where empno=?";
		int rows=new BaseDao().executeUpdate(sql,sal,empno);
		if(rows>0) {
			System.out.println("加薪成功");
		}
		else {
			System.out.println("不成功");
		}
}

public int executeUpdate(String sql,Object ...args) {
		try {
			Connection conn=this.getConnection();
			PreparedStatement ps=conn.prepareStatement(sql);
			if(args!=null) {
				for(int i=0;i<args.length;i++) {
					if(args[i].getClass()==java.util.Date.class) {
						java.util.Date dt=(java.util.Date)args[i];
						ps.setTimestamp(i+1, new Timestamp(dt.getTime()));
					}
					else {
					ps.setObject(i+1, args[i]);
					}
				}
			}
			int rows=ps.executeUpdate();
			ps.close();
			conn.close();
			return rows;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

查询的封装

public ResultSet executeQuery(String sql,Object ... args) {
		try {
			Connection conn=this.getConnection();
			PreparedStatement ps=conn.prepareStatement(sql);
			if(args!=null) {
				for(int i=0;i<args.length;i++) {
					if(args[i].getClass()==java.util.Date.class) {
						java.util.Date dt=(java.util.Date)args[i];
						ps.setTimestamp(i+1, new Timestamp(dt.getTime()));
					}else {
						ps.setObject(i+1, args[i]);
					}
				}
			}
		  ResultSet rs=	ps.executeQuery();
		  CachedRowSet set= RowSetProvider.newFactory().createCachedRowSet();
		  set.populate(rs);
		  rs.close();
		  ps.close();
		  conn.close();
          return set;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

对象的封装

create table grade(gradeId number(10),gradeName varchar2(30) not null);

create table students(stuid number(10) not null,stuname varchar2(30),gender varchar2(2),gradeid number(10),phone varchar2(20),address varchar2(50));

alter table grade add constraint pk_gradeid primary key(gradeid);
alter table students add constraint fk_gradeid foreign key(gradeid) references grade(gradeId);
alter table students add constraint ck_gender check(gender='男' or gender='女');

insert into grade values(100,'计算机科学与技术');
insert into students values(10001,'李玉','男',100,'19987260835','河南省许昌市');

create sequence sql_students_stuid
increment by 1
start with 10000;

alter table students
add constraint uq_stuname unique(stuname);--唯一约束

Dao数据访问对象

工具类 BaseDao 封装执行sql语句的常用方法

实体类 表——>类 student

          列——>字段

          外键列   对象类型

接口 封装对表操作的方法(crud)

      StudentDao

实现类

          StudentDaoImpl

包:XXX.dao

               工具类  BaseDao

               接口  StudentDao  GradeDao

    XXX.dao.impl 实现类

    XXX.entity  实体类
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个通用的删改查组件的代码示例。以下是一个基于 React 的示例: ```jsx import React, { useState } from "react"; const CrudComponent = ({ data, setData }) => { const [editing, setEditing] = useState(false); const [formData, setFormData] = useState({}); const [selectedId, setSelectedId] = useState(null); const handleFormChange = (event) => { const { name, value } = event.target; setFormData((prevFormData) => ({ ...prevFormData, [name]: value })); }; const handleAdd = () => { setData((prevData) => [...prevData, formData]); setFormData({}); }; const handleEdit = (id) => { setSelectedId(id); setEditing(true); setFormData(data.find((item) => item.id === id)); }; const handleUpdate = () => { setData((prevData) => prevData.map((item) => (item.id === selectedId ? formData : item)) ); setFormData({}); setEditing(false); setSelectedId(null); }; const handleDelete = (id) => { setData((prevData) => prevData.filter((item) => item.id !== id)); }; return ( <div> <h2>CRUD Component</h2> <h3>Add Item</h3> <input type="text" name="name" value={formData.name || ""} placeholder="Name" onChange={handleFormChange} /> <input type="text" name="description" value={formData.description || ""} placeholder="Description" onChange={handleFormChange} /> <button onClick={handleAdd}>Add</button> <h3>Edit Item</h3> {editing && ( <> <input type="text" name="name" value={formData.name || ""} placeholder="Name" onChange={handleFormChange} /> <input type="text" name="description" value={formData.description || ""} placeholder="Description" onChange={handleFormChange} /> <button onClick={handleUpdate}>Update</button> </> )} <h3>Items List</h3> <ul> {data.map((item) => ( <li key={item.id}> {item.name} - {item.description} <button onClick={() => handleEdit(item.id)}>Edit</button> <button onClick={() => handleDelete(item.id)}>Delete</button> </li> ))} </ul> </div> ); }; export default CrudComponent; ``` 这个组件包含了添加、编辑、删除和查看操作。您可以将其引入到您的项目中,并根据您的具体需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值