📄 customerbmpbean.java~154~
字号:
package prj32_1;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.ejb.FinderException;
import java.sql.*;
//实体Bean实现类:po+增删改查的函数
public class CustomerBmpBean
implements EntityBean {
EntityContext entityContext;
String account;
String password;
String cname;
double cbalance;
private Connection conn = null;
public CustomerBmpBean(){
System.out.println("CustomerBmpBean构造函数");
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:School","scott","tiger");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//ejbCreate:对应home接口中的create,参数一样,返回主键类型
//将内容添加到数据库,返回主键给环境(context)
public String ejbCreate(String account, String password, String cname,
double cbalance) throws CreateException {
setAccount(account);
setPassword(password);
setCname(cname);
setCbalance(cbalance);
try {
String sql = "INSERT INTO T_CUSTOMER(ACCOUNT,PASSWORD,CNAME,CBALANCE) VALUES(?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,account);
ps.setString(2,password);
ps.setString(3,cname);
ps.setDouble(4,cbalance);
ps.executeUpdate();
return account;
}
catch (Exception ex) {
//关掉ps之类的数据库访问组件,此处省略,下同
ex.printStackTrace();
}
return null;
}
//ejbPostCreate:J2EE规范函数,在ejbCreate函数调用之后自动调用,参数一样,无返回类型,可以不写
public void ejbPostCreate(String account, String password, String cname,
double cbalance) throws CreateException {
}
//ejbFindByPrimaryKey:对应home接口中的findByPrimaryKey,参数一样,返回主键类型
//从数据库载入数据,返回主键给环境(context)
public String ejbFindByPrimaryKey(String account) throws
FinderException {
try {
String sql = "SELECT ACCOUNT FROM T_CUSTOMER WHERE ACCOUNT=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,account);
ResultSet rs = ps.executeQuery();
if(rs.next()){
this.account = rs.getString("ACCOUNT");
return this.account;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**************以下七个函数从接口重写******************/
//setEntityContext:实际上在构造函数之后调用,也可以作初始化工作,如得到数据库连接
public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}
//ejbLoad:负责数据库对Bean的同步:将用主键标识的记录载入到Bean中
public void ejbLoad() {
try {
String sql = "SELECT PASSWORD,CNAME,CBALANCE FROM T_CUSTOMER WHERE ACCOUNT=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,this.account);
ResultSet rs = ps.executeQuery();
if(rs.next()){
this.password = rs.getString("PASSWORD");
this.cname = rs.getString("CNAME");
this.cbalance = rs.getDouble("CBALANCE");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//ejbStore:负责Bean对数据库的同步:将用主键标识的Bean更新到数据库记录
public void ejbStore() {
try {
String sql = "UPDATE T_CUSTOMER SET PASSWORD=?,CNAME=?,CBALANCE=? WHERE ACCOUNT=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, this.password);
ps.setString(2, this.cname);
ps.setDouble(3, this.cbalance);
ps.setString(4, this.account);
ps.executeUpdate();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//ejbRemove:负责由客户端来调用,删除一个对象,同时也删除数据库中的相应记录
public void ejbRemove() throws RemoveException {
try {
String sql =
"DELETE FROM T_CUSTOMER WHERE ACCOUNT=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, this.account);
ps.executeUpdate();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//实体Bean中为了优化资源分配,建立了池机制,一个在工作状态下的Bean放入池中,叫做Passivate
//池中的Bean到达工作状态叫做Activate,池状态下的Bean可以被其他记录重用,节省内存
public void ejbActivate() {
}
public void ejbPassivate() {//释放资源
this.account = null;
}
//释放资源
public void unsetEntityContext() {
this.entityContext = null;
try {
if (conn != null) {
conn.close();
conn = null;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
/************以下是po的支持函数:set,get函数,大部分和远程接口中的set,get函数相对应*********/
public void setAccount(String account) {
this.account = account;
}
public void setPassword(String password) {
this.password = password;
}
public void setCname(String cname) {
this.cname = cname;
}
public void setCbalance(double cbalance) {
this.cbalance = cbalance;
}
public String getAccount() {
return account;
}
public String getPassword() {
return password;
}
public String getCname() {
return cname;
}
public double getCbalance() {
return cbalance;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -