j14Model层的开发:高级JDBC练习.ppt

上传人:max****ui 文档编号:6357730 上传时间:2020-02-23 格式:PPT 页数:31 大小:3.05MB
返回 下载 相关 举报
j14Model层的开发:高级JDBC练习.ppt_第1页
第1页 / 共31页
j14Model层的开发:高级JDBC练习.ppt_第2页
第2页 / 共31页
j14Model层的开发:高级JDBC练习.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第14讲 Model层的开发 高级JDBC练习 回顾 为什么使用MVC设计模式 MVC设计模式各部分对应的组件是什么 MVC各部分间是如何协作的 本讲问题 什么是JNDI 如何理解连接池 如何理解DAO类 本讲任务 修改E Book电子书店系统增加通过JNDI查找数据源的功能 会使用JNDI获取数据源理解数据库连接池会读取基于属性文件的数据库配置信息掌握通用的DAO类会使用自定义异常 本讲目标 MVC的Model层 1 如何理解MVC中的Model MVC设计模式模型 Model视图 View控制器 Controller MVC对象 控制器 模型 视图 JSP Servlet Model层主要是进行业务逻辑处理 访问数据库和封装数据 企业级开发对Model层的要求 企业级开发需要稳健和高效的数据访问层完成对数据库的CRUD操作能够处理数据库发生的各种错误可以灵活的修改配置提供方便使用的工具高性能 数据库 请求 响应 操作 结果 要求高效 稳健的数据访问层 打开连接 操作数据库 关闭连接 多次重复操作 传统的JDBC已经无法满足需求 那怎么办呢 数据库连接池 普通电话 建立连接 等待回应热线电话 已建立连接 连接 已连接 开始通话 开始通话 已连接 直接通话 连接中 流程框架图表示使用规范 连接池中的连接 数据库 想要获得连接 返回一个连接 返回一个已连接好的空闲连接 应用程序从连接池中获得连接 连接池是由容器提供的 用来管理池中连接对象 应用程序 连接池 数据源简介 数据源 DataSource javax sql DataSource接口负责建立与数据库的连接从Tomcat的数据源获得连接把连接保存在连接池中 应用程序 Connection1 Connection2 Connection3 数据库 想要获得连接 返回一个连接 连接池 连接池中的连接对象是由谁创建的呢 JNDI介绍 如何获得DataSource对象数据源由Tomcat提供 不能在程序中创建实例使用JNDI获得DataSource引用什么是JNDIJNDI JavaNamingandDirectoryInterface Java命名和目录接口 是一组在Java应用中访问命名和目录服务的APIjavax namming Context接口的lookup 方法 应用程序 jdbc s1 jdbc s2 数据源 数据源名称 Connection context lookup jdbc s1 使用JNDI获取连接对象 importjavax naming Context importjavax naming InitialContext importjavax naming NamingException importjavax sql DataSource publicclassTitlesBean publicListgetTitles try Contextic newInitialContext DataSourcesource DataSource ic lookup java comp env jdbc books Connectionconnection source getConnection titlesQuery connection prepareStatement SELECT FROMtitles ResultSetresults titlesQuery executeQuery 为BookBean对象的属性赋值 并添加到titlesList中 catch SQLExceptionexception exception printStackTrace catch NamingExceptionnamingException namingException printStackTrace finally closeConn 使用JNDI和数据源要导入的包 通过Context DataSource获取Connection对象 分为两部分java comp env为JavaEE默认路径jdbc books为DataSource名 定义JNDI异常 演示示例1 JNDI的使用TitlesBean java JNDI的配置 Tomcat的conf context xml中的配置 JNDI的配置 加入数据库驱动文件把数据库驱动的 jar文件 加入到Tomcat的lib中应用程序的web xml文件的配置在web xml中配置 jdbc booksjavax sql DataSourceContainer 指定JNDI的名字 与元素中的name一致 指定引用资源的类名 与元素中的type一致 指定管理所引用资源的Manager与元素中的auth一致 常见错误 1 CannotloadJDBCdriverclass 这是什么错误 通过数据源访问数据库 由于数据源由Tomcat创建并维护 所以必须把JDBC驱动程序拷贝到Tomcat的lib目录下 代码框图表示使用规范 2 CannotcreateJDBCdriverofclass forconnectURL null DataSourcesource DataSource ic lookup java comp env jdbc books connection source getConnection titlesQuery connection prepareStatement SELECT FROMtitles 要一致 这是什么错误 TitlesBean java context xml 常见错误 3 NamejdbcisnotboundinthisContext DataSourcesource DataSource ic lookup jdbc books connection source getConnection 这是什么错误 参数错误 应该是 java comp env jdbc books JNDI小结 如何配置JNDI 如何通过JNDI获得数据库连接对象 JNDI相比JDBC有什么优点 数据库的配置 关于数据库的配置把配置信息写在代码中把配置信息存储在db properties文件中 privatestaticfinalStringDRIVER CLASS com microsoft sqlserver jdbc SQLServerDriver privatestaticfinalStringDATABASE URL jdbc sqlserver localhost 1433 DatabaseName books privatestaticfinalStringDATABASE USRE sa privatestaticfinalStringDATABASE PASSWORD publicstaticConnectiongetConnction ConnectiondbConnection null try Class forName DRIVER CLASS dbConnection DriverManager getConnection DATABASE URL DATABASE USRE DATABASE PASSWORD catch Exceptione e printStackTrace returndbConnection 数据库的配置信息 如果数据库信息改变 要重新进行编译 程序才能正确执行 driver com microsoft sqlserver jdbc SQLServerDriverurl jdbc sqlserver localhost 1433 DatabaseName booksuser sapassword sa 以键值对的形式存储数据 中间用 分隔 基于属性文件的数据库配置 从属性文件中读取配置信息 publicfinalclassEnvextendsProperties privatestaticEnvinstance publicstaticEnvgetInstance if instance null returninstance else makeInstance returninstance privatestaticsynchronizedvoidmakeInstance if instance null instance newEnv privateEnv InputStreamis getClass getResourceAsStream db properties try load is is close catch Exceptione e printStackTrace Java用来操作 properties文件的类 静态方法可以通过类名直接调用 同步方法 在同一时间 只允许一个人调用 保证安全性 把 properties文件内容加裁到对象中 创建ConnectionManager来读取属性信息 读出配置信息StringdriverClassName Env getInstance getProperty driver Stringurl Env getInstance getProperty url Stringuser Env getInstance getProperty user Stringpassword Env getInstance getProperty password 其它代码与以前所写的代码一样 Class与Object 2 1 Class总结forName StringclassName getResourceAsStream StringfileName 查找具有给定名称fileName的资源返回InputStream或者null 如果没有找到 应用程序 Class className 调用Class forName className 返回className类的对象 Object forName Class与Object 2 2 回顾Object类Object是类层次结构的根类 每个类都继承了Object类 所有对象 包括数组 都具有这个类的方法Object类的常用方法toString 返回该对象的字符串表示equals Objectobj 判断某个对象是否与此对象 相等 自定义异常 为什么需要自定义异常 取得数据库配置信息try Class forName driverClassName con DriverManager getConnection url user password catch Exceptionex thrownewDBAccessException 不能取得数据库连接 returncon 操作数据库 publicclassDBAccessExceptionextendsException protectedThrowablethrowable publicDBAccessException Stringmessage super message publicDBAccessException Stringmessage Throwablethrowable super message this throwable throwable 让操作人员读懂异常原因 出错信息友好提示 常见错误 属性文件的路径错误 这是什么错误 privateEnv InputStreamis getClass getResourceAsStream db properties try load is catch Exceptione e printStackTrace 应该是 db properties Env java 通用的DAO类 publicclassSQLCommandBean privateConnectionconn privateStringsqlValue privateListvalues publicvoidsetConnection Connectionconn this conn conn publicvoidsetSqlValue StringsqlValue this sqlValue sqlValue publicResultexecuteQuery throwsSQLException 执行查询 privatevoidsetValues PreparedStatementpstmt Listvalues throwsSQLException 设定语句的参数 SQLCommandBean java 通过set方法进行属性的设置 通过setValues 方法 进行SQL参数的设置 在DAO类中对数据库的查询和修改 增 删 改 的操作 演示示例2 SQLCommandBean java 通用DAO类的测试 测试类的main方法publicstaticvoidmain String args throwsDBAccessException SQLException SQLCommandBeansqlCommandBean newSQLCommandBean sqlCommandBean setConnection ConnectionManager getConnection Stringsql SELECT FROMtitlesWHEREprice andcopyright sqlCommandBean setSqlValue sql Listvalues newArrayList values add newDouble 60 00 values add newInteger 1997 sqlCommandBean setValues values Resultresult sqlCommandBean executeQuery 判断结果是否为null 通过setValues 方法 进行SQL语句中参数的设置 调用DAO类中查询数据的方法 返回Result TestSQLCommBean java DAO的测试类 演示示例3 TestSQLCommBean java Result与ResultSet Result与ResultSet的区别ResultSet是java sql ResultSet接口 表示数据库结果集的数据Result是javax servlet jsp jstl sql Result接口 用来迭代SQL查询的结果 在JSTL中 publicResultexecuteQuery throwsSQLException try stmt conn createStatement rs stmt executeQuery sqlValue result ResultSupport toResult rs catch Exceptione finally rs close stmt close returnresult 把ResultSet转换为Result 操作ResultSet时 必须与数据库连接 而Result不用 SQLCommandBean java Result的使用 从Result中读取数据 Resultresult sqlCommandBean executeQuery if result null result getRowCount 0 System out println 没有书籍 else for inti 0 i result getRowCount i Maprow result getRows i BookBeanbook newBookBean book setTitle String row get title 设置其它属性值titlesList add book TitleBean3 java 每行数据对应一个Map 在Map中根据字段名取出值 把封装好的对象 保存在List中 演示示例4 TitleBean3 java 自定义异常小结 为什么要自定义异常 请实现一个数据库连接失败的自定义异常 总结 为什么使用JNDI 到目前为止连接数据库有几种方式 说明从 properties文件中读取数据的步骤 为什么需要自定义异常
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!