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

php 建网站石家庄seo外包公司

php 建网站,石家庄seo外包公司,湖南现在有什么网站做农副产品,网站建设语言学什么第55次(JDBC) 学习主题#xff1a;JDBC 学习目标#xff1a; 1 掌握PreparedStatement的使用 2 掌握orm思想 3 掌握分层开发思想 4 掌握jdbc的crud 1. JDBC_PreparedStatement插入大量数据_批处理插入_效率比较 (1) jdbc新增大量数据时, 如何处理能提高效率? 利用PreparedSt… 第55次(JDBC) 学习主题JDBC 学习目标 1 掌握PreparedStatement的使用 2 掌握orm思想 3 掌握分层开发思想 4 掌握jdbc的crud 1. JDBC_PreparedStatement插入大量数据_批处理插入_效率比较 (1) jdbc新增大量数据时, 如何处理能提高效率? 利用PreparedStatement的addBatch和executeBatch方法对数据进行批处理。 (2) 什么是批处理? JDBC如何进行批处理? 在与数据库的一次连接中批量的执行多条SQL语句。使用addBatch方法添加sql语句executeBatch方法对数据进行批量操作。 2. JDBC_ORM_使用Map封装查询记录 (1) 什么是ORM? 对象关系映射(Object Relational Mapping)是一种程序技术用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。 (2) ORM解决的主要问题是什么? ORM解决的主要问题是对象关系映射。域模型和关系。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的而关系模型是面向关系的。一般情况下一个持久化类和一个表对应类的每个实例对应表中的一条记录类的每个属性对应表的每个字段。 3. JDBC_ORM_认识分层开发_包结构 (1) 什么是分层开发, 为什么要进行分层开发? 应用程序通过创建不同的包来实现项目的分层将项目中的代码根据功能做具体划分并存放在不同的包下。 1. 分层结构将应用系统划分为若干层每一层只解决问题的一部分通过各层的协作提供整体解决方案。大的问题被分解为一系列相对独立的子问题局部化在每一层中这样就有效的降低了单个问题的规模和复杂度实现了复杂系统的第一步也是最为关键的一步分解。 2. 分层结构具有良好的可扩展性为应用系统的演化增长提供了一个灵活的支持具有良好的可扩展性。增加新的功能时无须对现有的代码做修改业务逻辑可以得到最大限度的重用。 3. 分层架构易于维护。在对系统进行分解后不同的共功能将被封装在不同的层中层与层之间的耦合显著降低。因此在修改某个层的代码时只要不涉及层与层之间的接口就不会对其他层造成严重影响。 (2) 代码的分层是通过包(package)来区分的, 列举各层常见的包名? 数据访问层dao包、业务层service包、模型层pojo包、工具commons 4. JDBC_分层开发_环境搭建 (1) 什么是POJO? POJO(Plain Ordinary Java Object)简单的Java对象实际就是普通JavaBeans是为了避免和EJB混淆所创造的简称。 (2) 实体类有哪些特点? 1. 实体类的属性一般使用private修饰 2. 根据业务需要和封装性要求对实体类的属性提供get/set方法负责属性的读取和赋值一般用public修饰 3. 实体类提供无参构造方法根据业务需要提供相应的有参构造方法 4. 实体类最好实现java.io.Serializable接口支持序列化机制可以将该对象转换成字节序列而保存在磁盘上或在网络上传输 5. 如果实体类实现了java.io.Serializable接口就应该定义属性serialVersionUID解决不同版本之间的序列化问题 5. 分层开发_抽取BaseDao_封装update方法 (1) 代码抽取有几种方式? 应该遵循什么原则? 抽取方法、抽取类。 1. DRY(Don’t repeat yourself) 不要重复自己。多次遇到同样的问题就应该抽象出一个通用的解决方法而不是重复同样的代码。 2. YAGNI(You aren’t gonna need it) 你不会需要它。除了最核心的功能其他功能一概不要部署尽可能快、尽可能简单地让软件运行起来。即不要为了抽象而抽象不要让代码一开始就变成华而不实的空中楼阁。 3. Rule of Three 三次原则。第一次用到某个功能时你写一个特定的解决方案第二次又用到的时候你拷贝上一次的代码第三次出现的时候你才着手“抽象化”写出通用的解决方法。 理由1、 省事。如果一种功能一到两个地方会用到就不需要在“抽象化”上面耗费时间了。2、 容易发现模式。“抽象化”需要找到问题的模式问题出现的场合越多就越容易看出模式从而可以更准确地“抽象化”。3、 防止过度冗余。如果一种功能同时有多个实现管理起来非常麻烦修改的时候需要修改多出。在实际工作中重复实现最多可以容忍出现一次再多就无法接受了。 6. 分层开发_完成增删改操作 (1) JDBC实现增删改操作时有哪些注意事项? 1. 插入大量数据时要使用批处理。 2. 进行事务管理记得要提交事务commit出异常时要在catch语句中回滚rollback。 3. sql语句中的参数记得赋值。 4. 要关闭ResultSet、Statement、Connection资源。 (2) 简述JDBC中对事务的管理方式. 首先开启事务然后执行DML操作如果所有的DML操作都正确执行则使用commit提交事务如果有的DML操作不能正确执行则捕获该异常跳过commit提交事务语句在catch语句块中使用rollback回滚事务。 7. 分层开发_查询_添加操作 departments表结构 #配置文件 driver com.mysql.jdbc.Driver url jdbc:mysql://localhost:3306/test1?useUnicodetruecharacterEncodingutf-8 user root pwd 123 package com.abc.pojo; /*** 数据模型* 用来存放数据库中Departments表中的数据* author Administrator**/ public class Departments {private int department_id;private String department_name;private int location_id;public int getDepartment_id() {return department_id;}public void setDepartment_id(int department_id) {this.department_id department_id;}public String getDepartment_name() {return department_name;}public void setDepartment_name(String department_name) {this.department_name department_name;}public int getLocation_id() {return location_id;}public void setLocation_id(int location_id) {this.location_id location_id;}public Departments(String department_name, int location_id) {super();this.department_name department_name;this.location_id location_id;}public Departments() {super();}Overridepublic String toString() {return Departments [department_id department_id , department_name department_name , location_id location_id ];} }JdbcUtil package com.abc.commons;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ResourceBundle;import com.mysql.jdbc.Driver;public class JdbcUtil {private static String driver;private static String url;private static String user;private static String pwd;static{//加载配置文件ResourceBundle rb ResourceBundle.getBundle(jdbc);//参数初始化driver rb.getString(driver);url rb.getString(url);user rb.getString(user);pwd rb.getString(pwd);try {//加载驱动类Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection(){Connection conn null;try {//创建数据库连接conn DriverManager.getConnection(url,user,pwd);} catch (SQLException e) {e.printStackTrace();}return conn;}//关闭资源public static void closeResource(AutoCloseable...autoCloseables){for(AutoCloseable ac:autoCloseables){if(ac!null){try {ac.close();} catch (Exception e) {e.printStackTrace();}}}}public static void rollback(Connection conn){if(conn!null){try {conn.rollback();} catch (SQLException e) {e.printStackTrace();}}}}DepartmentDap接口 package com.abc.dao;import java.util.List;import com.abc.pojo.Departments;public interface DepartmentDao {/*** 添加一个部门* param dept* return*/public int insertDept(Departments dept);public int deleteByDeptId(int dept_id);public int updateByDeptId(int dept_id,String dept_name,int loc_id);/*** 根据名字查找部门* param dept_name* return*/public ListDepartments selectByDeptLikeName(String dept_name);}DepartmentDao接口的实现类 package com.abc.dao.impl;import java.util.List;import com.abc.dao.DepartmentDao; import com.abc.pojo.Departments;public class DepartmentDaoImpl extends BaseDaoImpl implements DepartmentDao {Overridepublic int insertDept(Departments dept) {String sql insert into departments values(default,?,?);Object[] obj new Object[]{dept.getDepartment_name(),dept.getLocation_id()};return this.update(sql, obj);}Overridepublic int deleteByDeptId(int dept_id) {return 0;}Overridepublic int updateByDeptId(int dept_id, String dept_name, int loc_id) {return 0;}Overridepublic ListDepartments selectByDeptLikeName(String dept_name) {String sql select * from departments where department_name like ?;Object[] obj new Object[]{%dept_name%};return this.select(sql, obj, Departments.class);}} BaseDao接口(实现通用的DML方法) package com.abc.dao;import java.util.List;public interface BaseDao {public int update(String sql,Object[] param);public T ListT select(String sql,Object[] param,ClassT clazz);}BaseDao的实现类 package com.abc.dao.impl;import java.lang.reflect.InvocationTargetException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import org.apache.commons.beanutils.BeanUtils;import com.abc.commons.JdbcUtil; import com.abc.dao.BaseDao;public class BaseDaoImpl implements BaseDao {Overridepublic int update(String sql,Object[] param) {Connection conn null;PreparedStatement ps null;int flag -1;try {conn JdbcUtil.getConnection();conn.setAutoCommit(false);ps conn.prepareStatement(sql);for(int i0;iparam.length;i){ps.setObject(i1, param[i]);}flagps.executeUpdate();conn.commit();} catch (SQLException e) {JdbcUtil.rollback(conn);e.printStackTrace();}finally{JdbcUtil.closeResource(ps,conn);}return flag;}Overridepublic T ListT select(String sql, Object[] param, ClassT clazz) {Connection conn null;PreparedStatement ps null;ResultSet rs null;ListT list new ArrayListT();try {conn JdbcUtil.getConnection();ps conn.prepareStatement(sql);for(int i0;iparam.length;i){ps.setObject(i1, param[i]);}//处理结果集rs ps.executeQuery();while(rs.next()){//完成ORM处理通过jdk反射T bean clazz.newInstance();//获取结果集的信息ResultSetMetaData rsmd rs.getMetaData();for(int i0;irsmd.getColumnCount();i){//得到列名String colName rsmd.getColumnName(i1);BeanUtils.setProperty(bean, colName, rs.getObject(colName));}list.add(bean);}} catch (Exception e) {e.printStackTrace();} finally{JdbcUtil.closeResource(ps,conn,rs);}return list;} } DepartmentService接口 package com.abc.service;import java.util.List;import com.abc.pojo.Departments;public interface DepartmentService {//增public int addDept(Departments dept);//删public int removeDeptById(int dept_id);//改public int modifyDeptById(int dept_id,String dept_name,int loc_id);//查public ListDepartments findByLikeName(String like_name); }DepartmentService的实现类 package com.abc.service.impl;import java.util.List;import com.abc.dao.DepartmentDao; import com.abc.dao.impl.DepartmentDaoImpl; import com.abc.pojo.Departments; import com.abc.service.DepartmentService;public class DepartmentServiceImpl implements DepartmentService {Overridepublic int addDept(Departments dept) {DepartmentDao departmentDao new DepartmentDaoImpl();return departmentDao.insertDept(dept);}Overridepublic int removeDeptById(int dept_id) {return 0;}Overridepublic int modifyDeptById(int dept_id, String dept_name, int loc_id) {return 0;}Overridepublic ListDepartments findByLikeName(String like_name) {DepartmentDao departmentDao new DepartmentDaoImpl();return departmentDao.selectByDeptLikeName(like_name);} } Test package com.abc.test;import java.util.List;import com.abc.pojo.Departments; import com.abc.service.DepartmentService; import com.abc.service.impl.DepartmentServiceImpl;public class Test {public static void main(String[] args) {DepartmentService departmentService new DepartmentServiceImpl();int flagdepartmentService.addDept(new Departments(教务部,80));System.out.println(flag);/*查找数据*//*ListDepartments list departmentService.findByLikeName(财务);for(Departments d:list){System.out.println(d);}*/} }8. 分层开发_使用BeanUtils封装查询方法 (1) 如何理解java的反射机制? JAVA反射机制是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法对于任意一个对象都能够调用它的任意方法和属性这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 (2) ResultSetMetaData有什么功能? getColumnCount(); 返回 ResultSet 中的列数。 getColumnName(int); 返回列序号为 int 的列名。 getColumnLabel(int); 返回此列暗含的标签。 isCurrency(int); 如果此列包含带有货币单位的一个数字则返回 true。 isReadOnly(int); 如果此列为只读则返回 true。 isAutoIncrement(int); 如果此列自动递增则返回 true。这类列通常为键而且始终是只读的。 getColumnType(int); 返回此列的 SQL 数据类型。
http://www.laogonggong.com/news/112481.html

相关文章:

  • 物流建设网站平山县建设局网站
  • 响应式网站设计布局张家港网站建设价格
  • 佛山低价网站建设wordpress备份文章
  • 网站建设管理 自查 报告舞阳网站建设
  • 网站特点菜谱设计制作图片
  • logo图标素材网站金乡网站建设哪家好
  • 展示型手机网站沧州市东光建设局 网站
  • 太原网站开发哪家好网站icp备案信息是什么
  • 三只松鼠网站开发模板网站建设swot
  • 怎样删除网站用网站模板 侵权 做了修改
  • 网站首页引导页运营工资一般多少
  • 旅游网站设计模板图片宁波网站建设相信荣胜网络
  • 网站做百度竞价利于百度优化做外贸推广
  • 网站如何做视频点播制作一个网址需要多少钱
  • 动漫做a视频网站有哪些在实际工作中最常用的网页制作工具
  • 哈尔滨网站开发以下什么是常用的可视化网页制作工具
  • 佛山市骏域网站建设公司网站维护如何上图
  • 网站界面 ui 设计答案在线房屋设计网站
  • 视频连接网站怎么做常见的网站推广途径
  • 刚做的单页网站怎么预览湖南旅游十大必去景区
  • WordPress用Aplayer短视频seo排名加盟
  • 网站开发工具的功能包括HTML或备案时的网站建设方案书
  • 天津免费做网站网站制作费计入哪个科目
  • 网站建设公司的学院网站建设的现状分析
  • 做公司网站需要准备什么资料网页设计图片主流尺寸
  • 房屋中介网站怎么做凡科快图官网下载
  • 泰兴做网站公司什么软件可以免费发广告
  • 网站登录怎么保存用户名密码深圳住房和建设局网站登录界面
  • 网站建设 国家标准易语言编程软件做网站
  • 哈尔滨网站优化页面怎么免费建设金融网站