我有一个方法getalldetails
(查询),它将从数据库中获取详细信息。我想在多个类中并基于查询调用此方法。它应该从数据库中获取数据。查询将动态传递。我想按照以下方式做。请指正,并建议我在整个项目中只使用一种方法进行数据检索。
我正面临着这些问题:
例如:在DatabaseDAO.java类
中public class DatabaseDAO {
public static void main(String[] args) {
public ResultSet getalldetails(String query){
ResultSet rs = null;
try{
PreparedStatement stmt = con.prepareStatement(query);
rs = stmt.executeQuery();
}
catch (SQLException e){
e.printStackTrace();
}
return rs;
}
}
假设我有两个类Employee和Product.java。我想在两个类中调用此方法。以下是我的代码:
public class Employee {
String query ="Select * from Employee";
ResultSet rs=null;
List<EmployeeDto> emp= new ArrayList<EmployeeDto>();
DatabaseDAO.getalldetails(query);
while (rs .has next)
{
EmployeeDto qd=new EmployeeDto();
qd.setidrs.getInt("id"));
qd.setname(rs.getString("name"));
qd.setrollno(rs.getString("rollno"));
emp.add(qd);
}
}
同样,我有Product.java。我想基于查询调用相同的方法来从数据库中检索数据。
public class Product {
String query ="Select * from Product";
ResultSet rs=null;
List<ProductDto> emp= new ArrayList<ProductDto>();
DatabaseDAO.getalldetails(query);
while (rs .has next)
{
ProductDto qd=new ProductDto();
pd.setidrs.getInt("prodid"));
pd.setname(rs.getString("prodname"));
pd.setrollno(rs.getString("item"));
prod.add(pd);
}
}
我想在整个项目中使用一种方法从DB中检索数据。意思是我想做方法的可重用性。请帮帮我。
答案 0 :(得分:0)
您可以在类中使其成为静态方法。说数据库。您可以通过导入Database
类并调用Database.getalldetails (query)
另外,我在您的代码中看到,您已在getalldetails
方法中定义了main
。你应该把它放在外面。
在Employee
类中,将代码放在类中,但在方法/构造函数之外。添加构造函数或方法并将代码放在那里
答案 1 :(得分:0)
嗯,这可以作为你概念的一个例子。
我将其称为DBMain类,它具有bot类的入口点,DatabaseDAO类的Product和Employee类。
首先,创建DatabaseDAO类的实例,然后初始化数据库连接。
DatabaseDAO dbDAO = new DatabaseDAO();
dbDAO.initConnection();
其次,使用DatabaseDAO实例作为参数创建Employee和Product类。
Employee emp = new Employee(dbDAO);
Product prd = new Product(dbDAO);
最后,您可以通过调用方法,getEmployeeList和getProductList从两个实例中检索数据,然后关闭DAO类拥有的连接。
try {
emplist = emp.getEmployeeList();
prdlist = prd.getProductList();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
dbDAO.closeConnection();
}
类的结构是一样的, 例如,getProductList()看起来是:
public List<ProductDto> getProductList() throws SQLException {
ResultSet rs = null;
List<ProductDto> prd = new ArrayList<ProductDto>();
rs = dataDAO.getalldetails(query);
while (rs.next()) {
ProductDto qd = new ProductDto();
qd.setProdid(rs.getInt("prodid"));
qd.setProdname(rs.getString("prodname"));
qd.setItem(rs.getString("item"));
prd.add(qd);
}
rs.close();
return prd;
}
您可以在DatabaseDAO实例中调用getalldetails方法,并将结果集设为dto对象列表。
员工和产品类:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Employee {
private static final String query = "Select * from Employee";
final DatabaseDAO dataDAO;
Employee(final DatabaseDAO dataDAO) {
this.dataDAO = dataDAO;
}
public List<EmployeeDto> getEmployeeList() throws SQLException {
ResultSet rs = null;
List<EmployeeDto> emp = new ArrayList<EmployeeDto>();
rs = dataDAO.getalldetails(query);
while (rs.next()) {
EmployeeDto qd = new EmployeeDto();
qd.setId(rs.getInt("id"));
qd.setName(rs.getString("name"));
qd.setRollno(rs.getString("rollno"));
emp.add(qd);
}
rs.close();
return emp;
}
}
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Product {
private static final String query = "Select * from Product";
final DatabaseDAO dataDAO;
Product(final DatabaseDAO dataDAO) {
this.dataDAO = dataDAO;
}
public List<ProductDto> getProductList() throws SQLException {
ResultSet rs = null;
List<ProductDto> prd = new ArrayList<ProductDto>();
rs = dataDAO.getalldetails(query);
while (rs.next()) {
ProductDto qd = new ProductDto();
qd.setProdid(rs.getInt("prodid"));
qd.setProdname(rs.getString("prodname"));
qd.setItem(rs.getString("item"));
prd.add(qd);
}
rs.close();
return prd;
}
}
Dao类 - DatabaseDAO,这个类只有一个结构,你可以根据数据库建立你的连接对象。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatabaseDAO {
private Connection con;
public DatabaseDAO()
{
}
public void initConnection()
{
}
public Connection getDBConnection()
{
return con;
}
public void closeConnection()
{
try {
this.con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet getalldetails(String query) {
ResultSet rs = null;
try {
PreparedStatement stmt = con.prepareStatement(query);
rs = stmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}
这里的主要方法类:
import java.sql.SQLException;
import java.util.List;
public class DBMain {
public static void main(String[] args)
{
DatabaseDAO dbDAO = new DatabaseDAO();
dbDAO.initConnection();
Employee emp = new Employee(dbDAO);
Product prd = new Product(dbDAO);
List<EmployeeDto> emplist = null;
List<ProductDto> prdlist = null;
try {
emplist = emp.getEmployeeList();
prdlist = prd.getProductList();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
dbDAO.closeConnection();
}
}
}
然后,剩下的dto类,EmpolyeeDto和ProductDto可能如下:
public class EmployeeDto {
private int id;
private String name;
private String rollno;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRollno() {
return rollno;
}
public void setRollno(String rollno) {
this.rollno = rollno;
}
}
public class ProductDto {
private int prodid;
private String prodname;
private String item;
public int getProdid() {
return prodid;
}
public void setProdid(int prodid) {
this.prodid = prodid;
}
public String getProdname() {
return prodname;
}
public void setProdname(String prodname) {
this.prodname = prodname;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
}