任务要求:设计一个电影院买票管理系统
数据库设计:5个表格
1. User(UserID, name, password, VIP_Level, phone, Gender。。。)
2. movie_list (movieID, movie_star, movie_language)
3. movie_detail (informationID, director, price, director, description, movieID....)
4. movie_showtime(movieID, showTime, screenNumber, maxSeat, availableSeat)
5. ticket(ID, userID, movieID, screenNumber, showTime, seatNeeded, Price, orderTme)
建立一个Fusion Web Application, 包含两个部分(Model和Control)
Model中存放VO,EO以及AM; Control中定义manageBean,.jpx文件等
遇到的问题:如何获取页面上的值???
1. 在Control中创建一个javaBean(与视图层关联)
2. 在adfc.config中的Managed Beans中注册过后才可以使用
3. 将页面上的数据与ManagedBean进行绑定(字段绑定后会生成Set, Get方法,方法绑定后会自动生成代码框架)
遇到的问题:如何与数据库连接???
1. 在AM中生成.java文件(需要再.xml的java栏的Client Interface中将方法暴露出来)
2. 在生成的java文件中添加业务逻辑代码
ADF数据库中的Number数据类型转为Int类型
int price = Integer.ParseInt(moviePrice.getValue()).toString();
如何在一个表格中显示两张表中的字段???
1. 两张表先建一个AO
2. 在主VO中筛选要显示的字段
如何根据页面上的值进行条件查询???
1. 在VO的Query中添加Bind Variables
2. 编辑Query语句查询,将条件写在查询语句中, 如 where movieID = :bindID
3. 将页面上的值传给绑定变量
- javaBean中获取页面上的条件值
- AM中 将值传给绑定变量(bindID)并执行
{
ViewObjectImpl vo = this.getMbpTicket1();
vo.setWhereClause(null);
vo.setWhereClauseParams(null);
vo.setNamedWhereClauseParam("bindID", ID);
vo.executeQuery();
}
如何根据一个字段查询数据库的另一个字段???
// 根据用户名查询用户的VIP等级
public int discountLevel(String name)
{
int level;
DBTransaction dbTransaction = this.getDBTransaction();
Statement stmt = dbTransaction.createStatement(1)
String strQuery_UserLevel =
"select VIP_LEVEL FROM MBP_MOVIE_USER WHERE FIRST_NAME = '" + name + "' ";
ResultSet rs_userLevel;
Integer userLevel = null;
try {
rs_userLevel =
dbTransaction.createStatement(0).executeQuery(strQuery_UserLevel);
if (rs_userLevel.next()) {
userLevel = ((BigDecimal)rs_userLevel.getObject(1)).intValue();
}
} catch (SQLException e) {
throw new JboException(e);
}
return userLevel;
}
注: 不建议直接操作数据库,应该操作封装好的VO,后面的文章中会做具体的介绍。