当前位置: 首页 > news >正文

网站制作建设需求要压实互联网企业的什么责任

网站制作建设需求,要压实互联网企业的什么责任,app比网站的优势,wordpress 字体大小一、JDBC介绍 Java数据库连接#xff0c;#xff08;Java Database Connectivity#xff0c;简称JDBC#xff09;是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口#xff0c;提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们…一、JDBC介绍 Java数据库连接Java Database Connectivity简称JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。 二、主要用途 1.与数据库建立连接 2.发送 SQL 语句 3.处理结果 三、JDBC概述 1、什么是JDBC  JDBCJava Data Base Connectivity,  Java数据库连接 是一种用于执行SQL语句的Java API为多种关系数据库提供统一访问 它由一组用Java语言编写的类和接口组成。 2、有了JDBC程序员只需用JDBC API写一个程序就可访问所有数据库。(常用的框架Hibernate、MyBatis底层都是JDBC都是对JDBC的封装)  3、 Sun公司、数据库厂商、程序员三方关系SUN公司是规范制定者制定了规范JDBC连接数据库规范 1DriverManager类   作用管理各种不同的JDBC驱动 2Connection接口   3Statement接口和PreparedStatement接口     4ResultSet接口 数据库厂商微软、甲骨文等分别提供实现JDBC接口的驱动jar包程序员学习JDBC规范来应用这些jar包里的类。 4、JDBC访问数据库步骤 加载一个Driver驱动创建数据库连接Connection 创建SQL命令发送器Statement通过Statement发送SQL命令并得到结果处理结果select语句关闭数据库资源 四、实例:用JDBC完成查询操作 1、ResultSet里的数据一行一行排列每行有多个字段且有一个记录指针指针所指的数据行叫做当前数据行我们只能来操作当前的数据行。我们如果想要取得某一条记录就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录就应该使用while循环。 2、ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法游标向下移动一行。 3、初始状态下记录指针指向第一条记录的前面通过next()方法指向第一条记录。循环完毕后指向最后一条记录的后面。 ResultSet类的方法 4、作为一种好的编程风格应在不需要Statement对象和Connection对象时显式地关闭它们。关闭Statement对象和Connection对象的语法形式为 5、用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时该ResultSet将被自动关闭。 示例是将后台查询到的数据在后台输出。实际开发中应该是客户端向服务器发起请求服务器端访问数据库得到数据并封装到List中作为整体传输到前台并在前台输出。另外可以使用try-with-resources方式来处理异常而省略finally语句中对资源的手动关闭。  五、JDBC高级操作 1、JDBC中使用事务 1在JDBC中事务操作缺省是自动提交。一条对数据库的DML(insert、update、delete)代表一项事务操作操作成功后系统将自动调用commit()提交否则自动调用rollback()回滚 2在JDBC中事务操作方法都位于接口java.sql.Connection中可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务在操作完成后调用commit()来进行整体提交倘若其中一个表达式操作失败都不会执行到commit()并且将产生响应的异常此时就可以在异常捕获时调用rollback()进行回滚,回复至数据初始状态 3事务开始的边界则不是那么明显了它会开始于组成当前事务的所有statement中的第一个被执行的时候。 4事务结束的边界是commit或者rollback方法的调用 2、连接池 建立数据库连接的两种方式: 1传统连接方式 首先调用Class.forName()方法加载数据库驱动 然后调用DriverManager.getConnection()方法建立连接. 2连接池技术: 连接池解决方案是在应用程序启动时就预先建立多个数据库连接对象,然后将连接对象保存到连接池中。 当客户请求到来时,从池中取出一个连接对象为客户服务。 当请求完成时,客户程序调用close()方法,将连接对象放回池中. 对于多于连接池中连接数的请求排队等待。 应用程序还可根据连接池中连接的使用率动态增加或减少池中的连接数。  3、传统的数据库连接方式的缺点 一个连接对象对应一个物理连接 每次操作都打开一个物理连接 使用完都关闭连接造成系统性能低下。 4、连接池技术的优点 客户程序得到的连接对象是连接池中物理连接的一个句柄 调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的联系. 5、数据库连接的建立及关闭是耗费系统资源的操作在大型应用中对系统的性能影响尤为明显。为了能重复利用数据库连接对象,缩短请求的响应时间和提高服务器的性能,支持更多的客户应采用连接池技术。 六、JDBC API总结 1、Connection接口 2、DriverManager类 作用管理一组 JDBC 驱动程序的基本服务 应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。在调用 getConnection 方法时DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。  3、Statement接口 作用用于将 SQL 语句发送到数据库中或理解为执行sql语句 有三种 Statement对象 Statement用于执行不带参数的简单SQL语句 PreparedStatement从 Statement 继承用于执行带或不带参数的预编译SQL语句 CallableStatement从PreparedStatement 继承用于执行数据库存储过程的调用。 4、PreparedStatement接口 关系public interface PreparedStatement extends Statement 区别 1PreparedStatment安全性高可以避免SQL注入 2PreparedStatment简单不繁琐不用进行字符串拼接 3PreparedStatment性能高用在执行多个相同数据库DML操作时 5、ResultSet接口 ResultSet对象是executeQuery()方法的返回值它被称为结果集它代表符合SQL语句条件的所有行并且它通过一套getXXX方法这些get方法可以访问当前行中的不同列提供了对这些行中数据的访问。 ResultSet里的数据一行一行排列每行有多个字段且有一个记录指针指针所指的数据行叫做当前数据行我们只能来操作当前的数据行。我们如果想要取得某一条记录就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录就应该使用while循环。 ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法游标向下移动一行。 初始状态下记录指针指向第一条记录的前面通过next()方法指向第一条记录。循环完毕后指向最后一条记录的后面。 七、连接池体系 ①传统连接方式的弊端分析 1.局限性 :  我们知道JDBC连接MySQL本质上还是走了Socket连接即网络通讯当Java程序在同一时间间隔内要与数据库建立较多连接时会消耗较长的时间网络开销大。而且Java程序通过JDBC连接数据库的最大连接数是有限制的如果同一时间间隔内Java程序要建立很多与数据库的连接甚至有多个Java程序都要与数据库建立连接很可能会把数据库给干爆导致数据库瘫痪跑不起来此时Java程序会抛出Too many connections异常。 2.几个弊端 : 传统的JDBC连接方式是通过DriverManager类的getConnection方法来获取连接的每次与数据库建立连接都需要将获取到的Connection对象加载到内存中再验证IP地址用户名和密码等信息通常消耗0.05~1s 时间取决于此时计算机的网络卡顿情况和此时的并发线程数。因此频繁的建立与数据库的连接会占用很多的系统资源容易造成服务器崩溃。每一次建立与数据库的连接后使用完毕都必须断开连接否则如果程序出现异常而未能正常关闭将导致数据库内存泄漏最终将导致重启数据库。传统获取连接的方式无法控制实际建立连接的数量若连接过多也可能导致内存泄漏MySQL崩溃。 ②数据库连接池 1.基本介绍 :  数据库连接池是指在Java程序未和数据库建立连接时就提前创建好一定数量的连接并放入缓冲池中当Java程序请求建立数据库连接时就可以直接从缓冲池中“拿出”建立好的连接来用用完后取消Java程序对该连接的引用即可连接本身不会中断只是“放回”了连接池动态绑定机制。数据库连接池负责分配管理和释放数据库连接它允许用户程序重复使用一个现有的数据库连接而不是重新建立一个。即连接池中的连接是公共的谁都能用你用完我可以接着用当应用程序向连接池请求的连接数超过最大连接数量时这些请求将被加入到等待队列中。 2.示意图如下 :  3.连接池种类 :  JDBC的数据库连接池使用javax.sql.DataSource来表示DataSource只是一个接口该接口通常由第三方来实现。C3P0数据库连接池速度相对较慢只是慢一丢丢但是稳定性很好Hibernate,Spring底层用的就是C3P0。DBCP数据库连接池速度比C3P0快但是稳定性差。Proxool数据库连接池有监控连接池状态的功能但稳定性仍然比C3P0差一些。BoneCP数据库连接池速度较快。Druid数据库连接池德鲁伊连接池由阿里提供集DBCPProxoolC3P0连接池的优点于一身是日常项目开发中使用频率最高的数据库连接池。 八、SpringJDBC 1.Spring的JDBC模块有四个包组成 core核心包JDBC核心功能JdbcTemplate就在此包内DataSource数据源包访问数据源的工具类SimpleDriverDataSource 在此包Object对象包以面向对象的方式访问数据库它允许执行查询并将结果作为业务对象处理数据表和业务对象之间的映射support支持包含有core和object包的支持类   2.配置数据库资源 在Spring中通过JDBC驱动定义数据源是最简单的配置方式。Spring提供了三个这样的数据源类均位于org.springframework.jdbc.datasource包中供选择 org.springframework.jdbc.datasource.DriverManagerDataSource在每个连接请求时都会返回一个新建的连接旧的JDBC无池化管理。基本上已被SimpleDriverDataSource取代。org.springframework.jdbc.datasource.SimpleDriverDataSource与DriverManagerDataSource的工作方式类似但是它直接使用JDBC驱动。org.springframework.jdbc.datasource.SingleConnectionDataSource它的连接不会关闭在每个连接请求时都会返回同一个的连接。它不是严格意义上的连接池数据源但是可以将其视为只有一个连接的连接池 除了这些简单的数据原外所以我们也可以选择其他的第三方连接池使用第三方的数据库连接池其实有很多不过大多使用Druid(阿里的)、HikariCP(springboot目前默认的)。   3. JdbcTemplate 在web编程中传统JDBC每次执行SQL时每次都需要获取Connection、PreparedStatement、ResultSet 这些数据库资源然后就需要大量的try、catch、finally语句捕捉异常、关闭数据库资源。既便是专门使用一个类设置成单例进行封装它依然是很繁琐的。在spring 中提供了JdbcTemplate模板来解决这个问题它是比较经典的jdbc实现方式之一同时也是Spring 在jdbc方便最底层的方法SimpleJdbcInsertSimpleJdbcCall 等底层都是用了JdbcTemplate。JdbcTemplate是 org.springframework.jdbc.core 中的类用来处理数据库资源的创建和释放 JdbcTemplate类主要包含下面这些功能 执行SQL查询语句执行更新语句和存储过程调用对 ResultSet 执行迭代并提取返回的参数值。捕获JDBC异常并进行处理 我们发现这些功能都是我们在写 JCBC时每条sql语句都会涉及到的内容而JdbcTemplate把这些提取出来进行封装我们只需要在XML中配置好就可直接提供sql语句执行了。 bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplate!--将之前配置好的连接池加载进来 --property namedataSource refdruidDataSource/ /bean 获取JdbcTemplate对象就可以直接使用它内部的常用的方法 query()重载了大量 query方法来进行数据的查询操作返回的是List内部是自定义的Bean List query(String sql, PreparedStatementSetter pss, RowMapper rowMapper)根据sql语句创建PreparedStatementSetter 对象。通过RowMapper 将结果返回到list中 List query(String sql, Object[] args, RowMapper rowMapper)使用Object[] 的值注入sql语句利用RowMapper 返回数据 List query(String sql, RowMapper rowMapper, Object… args) jdbcTemplate.query(sql, new BeanPropertyRowMapper(数据表对应的类.class),参数....); queryForObject(String sql, RowMapper rowMapper, Object… args)()只能查询一行数据库记录RowMapper自动封装返回任意对象 jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(数据表对应的类.class),参数....); queryForList()可以返回多行数据的结果返回的是List数据update()此方法用来进行修改、新增、删除操作 int update(String sql) int update(String sql,Object… args) int[] batchUpdate(String sql, ListObject[] batchArgs, final int[] argTypes) 批量执行新增、更新、删除等语句sql需要执行的 SQL 语句argTypes需要注入的 SQL 参数的 JDBC 类型batchArgs表示需要传入到 SQL 语句的参数。execute()可以执行任意 SQL一般用于执行 DDL 语句 SpringJUnitConfig(locations {classpath:application.xml}) public class JDBCTest {Resourceprivate JdbcTemplate jdbcTemplate;Testpublic void select(){Integer[] id {1};String sql select * from classes where c_id ?;//Classes classes jdbcTemplate1.query(sql, new BeanPropertyRowMapper(Classes.class),id); Classes classes jdbcTemplate.queryForObject(sql,id,(ResultSet rs,int rowNum)-{Classes classes1 new Classes();classes1.setcId(rs.getInt(c_id));classes1.setClassesName(rs.getString(classes_name));classes1.setDeleted(rs.getBoolean(is_deleted));return classes1;});if(classes!null){System.out.println(classes.getClassesName());}}Testpublic void selectAll(){String sql select * from classes;ListClasses list jdbcTemplate.query(sql, new BeanPropertyRowMapper(Classes.class));list.forEach(c - System.out.println(c.getClassesName()));}Testpublic void insert(){String classesName 新增班级;String sql insert into classes(classes_name) values(?);jdbcTemplate.update(sql, classesName);}Testpublic void delete(){int id 1;String sql delete from classes where c_id?;jdbcTemplate.update(sql,id);}Testpublic void update(){String newName 修改班级;int id 1;String sql UPDATE classes SET classes_name? WHERE classes.c_id ?;jdbcTemplate.update(sql,newName,id);} }九、spring整合mybatis 1.传统的dao方式操作数据库 即获取sqlSession然后调用sqlSession.selectOne 等等的方式来进行数据库操作。 2.mapper方式 使用mapper方式只需要一个接口类不需要实现类但有几点要求 1映射文件保持命名空间与接口类名称一致注意这个命名空间如果没有在sqlMapConfig里配置好typeAliases则必须是全路径命称即此处命名空间名称必须为mapper接口路径加名称 2映射文件的SQLID名与mapper接品方法名一致 3映射文件的输入参数与mapper接口的形参一致 4映射文件的返回结果类型与mapper接口的返回类型一致 另注意如果在sqlMapConfig里采用的是包方式的映射即mappers标签下使用的是package标签则需保证映射文件与mapper接口在同一目录下并且必须名称相称如果不是以包方式则不需要如此只需要保证以上4点即可。另第二种方式一般以sqlSession.getMapper 方式调用。 十、SpringBoot持久化 1.使用SpringBoot的过程中常用的持久化解决方案主要有两种一种是Mybatis框架另一个就是SpringData JPA。 2. SpringData JPA和MyBatis最大的区别就是SpringData JPA是Spring亲生的这个从名字的命名方式上也能看出来当然是因为它们是一家人了。
http://www.zqtcl.cn/news/476559/

相关文章:

  • 长沙企业建网站绵阳市三台县城乡建设局网站
  • 常宁市城市建设规划管理局网站织梦网做网站步骤
  • 对网站开发实训的建议怎么把产品推广到各大平台
  • wap网站是什么意思啊网站建设网站模板
  • 湛江市建设局网站天津网站建设渠道
  • 做图专业软件下载网站深圳营销型网站哪家好
  • 手机网站模板用什么做高端展馆展厅设计方案
  • 长春企业网站seo国土网站建设自查报告
  • 建设电动车官方网站设立深圳公司
  • 蓝奏云注册网站工程设计方案主要内容
  • 建设官方网站企业网站公司可以做网站
  • 网站销售流程中装建设集团官网
  • 动易网站无法安装网站开发广告
  • 做网站类型注册域名com和cn
  • 织梦 做网站 知乎系统优化软件推荐
  • 长沙网站制作哪家强网站后台是怎么做的
  • Linux网站开发设计做ppt网站动态
  • 西部中大建设集团网站微商代理网
  • 做网站的参考文献有哪些火车头采集 wordpress
  • 网站不备案会有什么影响最新企业名录搜索软件
  • 邯郸做网站公司哪家好优化设计四年级下册数学答案
  • wordpress企业建站模版wordpress门户网站模板
  • 网站建设时间及简介企业注册代理
  • 网站首页制作方案wordpress中常用插件安装包
  • 阿里云建立网站赤坎网站建设公司
  • 时光轴 网站小公司做网站赚钱吗
  • 手机管理网站模板乐山住房和城乡建设厅网站
  • wordpress链接样式设置方法网络seo推广培训
  • 建站系统wordpress下载企业网站建设课程体会
  • 网站资源规划怎么写wordpress怎么解绑域名