1.DbUtils
工具类
提供很多边界方法,其中的静悄悄的方法我们很喜欢~
2.QueryRunner
(1)这组很方便,不需要事务时用这组方法
QueryRunner(DataSource ds)
<T> T query(String sql, ResultSetHandler<T> rsh)
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
int update(String sql)
int update(String sql, Object... params)
int update(String sql, Object param)
(2)当需要控制事务时,因为需要利用Connection控制事务,所以用这组方法
QueryRunner()
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh)
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
int update(Connection conn, String sql)
int update(Connection conn, String sql, Object... params)
int update(Connection conn, String sql, Object param)
3.ResultSetHandler的实现类
ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
!!!!BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
!!!!BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
!!!!ScalarHandler :用来返回第一行数据中指定列(默认第一列)的数值 -- 用在进行单值查询
客户管理系统 --- 开发一个基于数据库的案例,实现基于数据库的信息的增删改查
添加客户 查询客户 修改客户 删除客户 条件查询客户 分页查询客户
jsp+servlet+jdbc+mysql+tomcat
javaee的经典三层架构 工厂类+配置文件+接口实现软件分层
com.itheima.
web
service
dao
domain
util
exception
factory
test
*junit
*jstl
beanutils
mysql驱动
c3p0
dbutils
c3p0-config.xml
config.properties
create table customer(
id int primary key auto_increment,
name varchar(20),
gender char(3),
birthday date,
cellphone varchar(20),
email varchar(40),
preference varchar(40),
type varchar(50),
description varchar(255)
);
开发javabean
工厂类实现软件分层
添加客户
index.jsp 提供 添加客户
addCust.jsp 提供添加客户用到表单,提交到后台
AddCustServlet 封装数据校验数据 调用Service中的方法添加客户 成功后回到主页
CustService 提供添加客户的方法,调用dao中添加客户信息的方法
CustDao 提供添加客户的方法
查询客户
index.jsp 提供 查询客户
CustListServlet 调用Service中的方法查询出所有客户信息,将查到的信息存入request带到页面显示
CustService 查询所有客户信息,调用dao中查询所有客户的方法
CustDao 查询所有客户的方法
custList.jsp 以表格的形式展示所有客户信息
修改客户(前置有一个单条查询)
custList.jsp 每条记录后都应该有一个连接,修改,访问FindCustByIdServlet
FindCustByIdServlet 获取要查询的客户id,根据id调用Servcie中查询客户的方法查到客户,转发到updateCust.jsp页面
updateCust.jsp 提供修改表单,允许用户修改后提交
UpdateCustServlet 调用Service中修改客户的方法,修改后再重定向回到客户列表页面
CustService 根据id查找客户 修改客户
CustDao 根据id查找客户 修改客户
删除客户
在客户列表页面 删除
DelCustServlet 获取要删除的客户id ,调用Service中的方法根据id删除用户 重定向回到客户列表页面
CustService 根据id删除客户
CustDao 根据id删除客户
批量删除客户
在客户列表页面的每条记录之前都有一个复选框,在这个表后有删除按钮 点击时带着所选的所有的要删除的客户的id访问
BatchDelServlet 获取所有要删除的客户id 调用Service中的方法批量删除客户 重定向到客户列表页面
CustService 批量删除客户 遍历所有id调用 dao中根据id删除客户的方法(事务控制)
ThreadLocal -- (线程局部 (thread-local) 变量)
客户管理系统的源代码我会在下一篇博客中公开,有兴趣的朋友可以拿去研究。