这是前人总结出来的
bean的种类分三种:
第一种:负责操作数据库,只有一个DBOperate.java,里面包括加载驱动、建立链接等,对外提供两个方法ResultSet executeQuery(String sql)和boolean executeUpdate(String sql);
第二种:描述数据结构的bean,基本上是每个jsp页面/数据库表一个bean,其属性都是表单/数据库表中的字段,方法全是set(),get(),如对于用户注册,可以写一个UserInfo.java,属性包括user_name,user_id等,方法包括getUserName(),setUserName,getUserID(),setUserID()等
第三种:负责控制的bean,应该是一个对象一个bean,如对于用户你可以建立一个User.java,里面全是方法,如boolean addUser(UserInfo user_info),boolean deleteUser(int user_id),UserInfo queryUser(int user_id)等我自己实践了一下,觉得第二第三也可以合在一起
只是在进行update和delete的时候觉得不是很灵活,不知如何设计update()和delete()方法,以灵活处理各种条件限制
update table set column1 = ?,......where columnn=?
delete from table where .............
大家是怎么实现的,请指教
bean的种类分三种:
第一种:负责操作数据库,只有一个DBOperate.java,里面包括加载驱动、建立链接等,对外提供两个方法ResultSet executeQuery(String sql)和boolean executeUpdate(String sql);
第二种:描述数据结构的bean,基本上是每个jsp页面/数据库表一个bean,其属性都是表单/数据库表中的字段,方法全是set(),get(),如对于用户注册,可以写一个UserInfo.java,属性包括user_name,user_id等,方法包括getUserName(),setUserName,getUserID(),setUserID()等
第三种:负责控制的bean,应该是一个对象一个bean,如对于用户你可以建立一个User.java,里面全是方法,如boolean addUser(UserInfo user_info),boolean deleteUser(int user_id),UserInfo queryUser(int user_id)等我自己实践了一下,觉得第二第三也可以合在一起
只是在进行update和delete的时候觉得不是很灵活,不知如何设计update()和delete()方法,以灵活处理各种条件限制
update table set column1 = ?,......where columnn=?
delete from table where .............
大家是怎么实现的,请指教
解决方案 »
- jsp使用flash控件实现上传图片
- [Microsoft][ODBC Microsoft Access Driver]非法的事务状态
- EditPlus 格式化XML代码?
- 求救 求救 JPS 开发 连接编译出现 错误 org.apache.jasper.JasperException: Unable to load class for JSP
- 对于javaScript
- 怎样在linux及solaris下进行WEB服务的配置?
- 关于 servlet 访问的问题
- 谁有无组件上传的例子,给我发一份!谢谢大家了!
- jsp编码问题???
- 高手,求助!关于页面刷新问题!
- 一个用Java的线程间数据通讯的编程问题!
- 高分求解(在线等待)
/**
* Title:
* Description:
* Copyright:
* @author
* @version
*/import java.sql.*;
public class ConnDb {
private String query_statement; /*定义sql语句*/
private String param[]; /*查询条件,或者是新的记录*/
private String strParam[]; //事务中的一系列SQL语句
private String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
private String sConnStr = "jdbc:odbc:eshop"; private ResultSet result = null;
private Connection conn = null;
private Connection conn1; public ConnDb() {
try{
Class.forName(sDBDriver);
this.conn1 = DriverManager.getConnection(sConnStr,"sa","soft");
this.conn1.setAutoCommit(false); /*设置事务完成模式*/
this.conn = this.conn1;
}
catch(java.lang.Exception e){
System.err.println("OpenDb():" + e.getMessage());}
} public Connection getConn() {
return this.conn;
} public void setParam(String[] args) {
this.param = args;
}
public void setStrParam(String[] args) {
this.strParam = args;
}
public void setQuerystatement(String query_statement) {
this.query_statement = query_statement;
} /*获取查询结果*/
public ResultSet getResult() {
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
PreparedStatement select_stm = conn.prepareStatement(query_statement,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
if (param != null)
for(int i = 0; i < param.length; i++)
select_stm.setString(i+1,param[i]);
result = select_stm.executeQuery();
}
catch (Exception e){
System.out.println(e);
}
return result;
}
//执行事务
public boolean commitToDb() throws SQLException {
conn.setAutoCommit(false);
if(strParam == null){
System.out.println("事务语句为空!");
return false;
}
Statement tt = conn.createStatement();
try{
conn.setAutoCommit(false);
for(int i = 0; i < strParam.length; i++){
//System.out.println("i=" + i);
tt.execute(strParam[i]);
}
conn.commit();
}
catch(SQLException e){
conn.rollback();
tt.close();
e.printStackTrace();
return false;
}
tt.close();
conn.setAutoCommit(true);
return true;
} /*对数据库进行增加记录操作*/
public boolean insertRecord() throws SQLException,java.io.UnsupportedEncodingException {
boolean returnTemp = true;
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
PreparedStatement insert_stm=conn.prepareStatement(query_statement);
if (param!=null)
for(int i=0;i<param.length;i++)
insert_stm.setString(i+1,param[i]);
insert_stm.executeUpdate();
insert_stm.close();
conn.commit();
}
catch(Exception e) {
System.out.println(e);
returnTemp = false;
conn.rollback();
}
return returnTemp;
} /*对数据记录进行更改操作*/
public boolean updateRecord() throws SQLException,java.io.UnsupportedEncodingException {
boolean returnTemp = true;
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
PreparedStatement update_stm=conn.prepareStatement(query_statement);
if (param!=null)
for (int i=0;i<param.length;i++)
update_stm.setString(i+1,param[i]);
update_stm.executeUpdate();
returnTemp = true;
update_stm.close();
conn.commit();
}
catch(Exception e) {
System.out.println(e);
returnTemp = false;
conn.rollback();
}
return returnTemp;
}
/*删除数据记录*/
public boolean deleteRecord() throws SQLException,java.io.UnsupportedEncodingException {
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
PreparedStatement delete_stm=conn.prepareStatement(query_statement);
if (param!=null)
for (int i=0; i < param.length; i++)
delete_stm.setString(i+1,param[i]);
delete_stm.executeUpdate();
delete_stm.close();
conn.commit();
return true;
}
catch(Exception e) {
System.out.println(e);
conn.rollback();
return false;
}
} /*//得到统计值
public float getFloat()
{
float returnTemp = 0;
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
Statement rs;
returnTemp = rs.getMaxRows(query_statement);
rs.close();
conn.commit();
}
catch(Exception e) {
System.out.println(e);
conn.rollback();
}
return returnTemp;
}
*/
/*在数据库中执行任何SQL语句*/
public boolean executeSql() throws SQLException,java.io.UnsupportedEncodingException {
boolean returnTemp = true;
if(query_statement == null || query_statement == "")
System.out.println("SQL语句为空!");
try
{
PreparedStatement execute_stm=conn.prepareStatement(query_statement);
if (param!=null)
for (int i=0;i<param.length;i++)
execute_stm.setString(i+1,param[i]);
execute_stm.execute();
returnTemp = true;
execute_stm.close();
conn.commit();
}
catch(Exception e) {
System.out.println(e);
returnTemp = false;
conn.rollback();
}
return returnTemp;
}
}
第一个bean 是负责处理数据库连接的包括数据库事物处理。
其他的bean 里自己定义一些方法,实现各种操作,就是说把第二和第三和在一起了。也不一定要用get,set语句,
你写一个带变量的方法不也可以吗?
我都用过,就是get set太麻烦了,还不如些个
public boolean ClassUpdate(String userName,String passWord,int age){
}比用set 和 get方法要简单一点!数据库连接一般用*.properties文件来设置,这样不是很好吗?------------------------------------------
偶也不知道哪中方法更好一点。
第二种类对应每个表的记录,就是所谓的EntityBean,只保存数据,不处理。只包含set,get方法
第三种类就是SessionBean,包含处理EntityBean的方法,每个EntityBean至少对应一个SessionBean