首页 > 代码库 > 多表操作
多表操作
## 多表操作 (DBUtils框架)##
# 基本概念
即数据库中一对多及多对多的表之间的操作;
# 基本开发步骤;
>> 添加jar包;
>> 添加Util工具类;
>> 添加domain中的基础类;
|-- customer
|-- orders
|-- 添加素材中的表;
>> 分析问题;
|-- 类与类之间没有外键关系;
|-- 那么如何完成表与表之间的关联呢?
|-- 类与类之间有的关系
|-- 继承;
|-- 包含与引用;
|-- 可以通过一个List集合来包含用户的多个订单;
|-- 在订单类中加入顾客的对象属性,即可
确认该订单是哪位顾客下的;
>> 建立一个Test包;
>> 建立一个Dao的实现类;
|-- 在当中添加实现级联的方法;
|-- 实现关联查询方法;
|-- 解释;
当查询客户的时候,连同客户的订单一起查询出来;
>> 分析问题;
|-- 希望将查询顾客和顾客订单分离开;
|-- 解决
|-- 在方法中设置flag;
# 多对多关系的维护;
>> 基本分析;
|-- 老师的类中添加一个集合用于存放学生的信息;
|-- 学生的类中添加一个集合用于存放老师的信息;
## 分页 ##
# 基本概念;
因为数据库中的数据很多,如果一次性全部加入到内存中,
会导致内存溢出;所以需要将我们指定的内容加载到内存中
来进行操作;
# 如何做分页;
>> 从数据库层面的思考;
|-- select * from account limit startInde,size;
startIndex:
>> 将分页的sql语句发送到服务器上,自然会分页进行处理并返回;
>> 在内存中进行处理,只加载前10条(该方法并未解决本质问题);
# 代码的问题;
>> 新建一个web项目;
>> 导入jar包,配置文件,Util工具类;
>> 新建一个分页主键 PageBean.java 并序列化;
|-- 定义当前页变量;
|-- 定义当前页显示的数量变量;
|-- 定义上一页的变量;
|-- 定义下一页的变量;
|-- 定义总页数变量;
|-- 定义总记录数的变量;
|-- 定义当前页的记录集合;
|-- 定义当前页第一条记录的索引 --- 用于给limit startIndex 使用;
>> 问题:
页面的计算代码需要放在什么地方?
|-- 放在get方法中,因为EL表达式会默认调用get方法;
>> 定义DAO层;
|-- 在实现类中定义获取总记录数的方法;
|-- 定义查询当前页的总记录数;
>> 定义业务逻辑层;
>> 定义Servlet层,实现视图代码;
## 监听器 (web三大组件之一)##
# 基础知识;
# 自定义监听器;
>> 定义一个事件;
>> 定义一个用于存储事件源的对象;
>> 定义一个学生监听器的接口;
|-- 定义监听学生学习的方法;
|-- 定义监听学生吃饭的方法;
>> 定义一个学生类;
# 监听器的编写步骤;
>> 写类,实现相应的Listener接口;
>> 配置web.xml文件;
# Servlet中的8个监听器;
|-- 第一组;
>> ServletContextListener;
>> HttpSessionListener;
>> ServletReuestListener;
|-- 第二组;
>> ServletContextAttributeListener;
>> HttpSessionAttrbuteListener;
>> ServletRequestAttributeListener;
|-- 第三组 --- 这两个监听器不用注册;
>> HttpSessionBindingListener;
>> HttpSessionActivationListener;
## 踢人综合示例(使用监听器实现) ##
# 开发步骤;
>> domain包中建立User类
>> 建立LoginServlet类;
>> 建立一个监听器类;
多表操作