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

开发软件和做网站的区别wordpress同步新浪微博

开发软件和做网站的区别,wordpress同步新浪微博,北京万户网络技术有限公司,在电脑上做网站七#xff1a;DAO及相关实现类 1. DAO介绍 DAO#xff1a;全称Data Access Object,是数据访问对象.在java服务器开发的三层架构中分成控制层(Controller),表示层(Service),数据访问层(Dao),数据访问层专门负责跟数据库进行数据交互.#xff0c;包括了对数据的CRUD#xff…七DAO及相关实现类 1. DAO介绍 DAO全称Data Access Object,是数据访问对象.在java服务器开发的三层架构中分成控制层(Controller),表示层(Service),数据访问层(Dao),数据访问层专门负责跟数据库进行数据交互.包括了对数据的CRUDCreate、Retrival、Update、Delete而不包含任何业务相关的信息。有时也称作BaseDAO DAO设计的总体规划需要设计的表和相应的实现类之间一一对应。 DAO层的设计首先是设计DAO的接口然后在定义此接口的实现类然后就可在模块中调用此接口来进行数据业务的处理而不用关心此接口的具体实现类是哪个类显得结构非常清晰DAO层的数据源配置以及有关数据库连接的参数都在配置文件中进行配置。 作用为了实现功能的模块化更有利于代码的维护和升级。在实际生产中也是使用DAO的样式进行编写。 2. BaseDAO 把用到的通用操作写在此类中用作父类供子类调用 例把之前编写的增删查改的具体方法代码放入其中还可以添加一些其他方法 import java.lang.reflect.Field; 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 com.jdbc1.util.JDBC_Utils;/**** * author Cat God 007 封装了数据表的基本通用操作**/ public abstract class BaseDAO {// 通用的增删改操作---version2.0public int update(Connection conn, String sql, Object... args) {PreparedStatement ps null;try {ps conn.prepareStatement(sql);for (int i 0; i args.length; i) {ps.setObject(i 1, args[i]);// 小心参数声明错误从1开始}return ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {JDBC_Utils.closeResource(null, ps);}return 0;}// 通用的查询操作返回一条数据----version2.0(考虑上数据库事务)public T T getInstance(Connection conn, ClassT clazz, String sql, Object... args) {PreparedStatement ps null;ResultSet rs null;try {ps conn.prepareStatement(sql);for (int i 0; i args.length; i) {ps.setObject(i 1, args[i]);}rs ps.executeQuery();// 获取结果集的元数据ResultSetMetaData rsmd rs.getMetaData();// 通过ResultSetMetaData获取结果集中的列数int columnCount rsmd.getColumnCount();if (rs.next()) {T t clazz.newInstance();for (int i 0; i columnCount; i) {// 获取列值结果集Object columnvalue rs.getObject(i 1);// 获取每个列的列名结果集元数据 // String columnName rsmd.getColumnName(i 1);// 获取每个列的别名无别名就获取表的列名结果集元数据String columnLabel rsmd.getColumnLabel(i 1);// 给cust指定columnName属性赋值为columnvalue通过反射Field field clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t, columnvalue);}return t;}} catch (Exception e) {e.printStackTrace();} finally {JDBC_Utils.closeResource(null, ps, rs);}return null;}// 通用的查询操作返回多条数据----version2.0(考虑上数据库事务)public T ListT getForList(Connection conn, ClassT clazz, String sql, Object... args) {PreparedStatement ps null;ResultSet rs null;try {ps conn.prepareStatement(sql);for (int i 0; i args.length; i) {ps.setObject(i 1, args[i]);}rs ps.executeQuery();// 获取结果集的元数据ResultSetMetaData rsmd rs.getMetaData();// 通过ResultSetMetaData获取结果集中的列数int columnCount rsmd.getColumnCount();// 创建集合对象ArrayListT list new ArrayListT();while (rs.next()) {T t clazz.newInstance();// 给t对象指定的属性赋值for (int i 0; i columnCount; i) {// 获取列值结果集Object columnvalue rs.getObject(i 1);// 获取每个列的列名结果集元数据 // String columnName rsmd.getColumnName(i 1);// 获取每个列的别名无别名就获取表的列名结果集元数据String columnLabel rsmd.getColumnLabel(i 1);// 给cust指定columnName属性赋值为columnvalue通过反射Field field clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t, columnvalue);}list.add(t);}return list;} catch (Exception e) {e.printStackTrace();} finally {JDBC_Utils.closeResource(null, ps, rs);}return null;}//新增用于查询特殊值的通用方法,如查询表中的总人数等public E E getValue(Connection conn,String sql,Object ...args){PreparedStatement ps null;ResultSet rs null;try {ps conn.prepareStatement(sql);for(int i 0;i args.length;i) {ps.setObject(i 1, args[i]);}rs ps.executeQuery();if(rs.next()) {return (E) rs.getObject(1);}} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(null, ps, rs);} return null;}}3.XxxDAO 定义针对某一表或数据库的功能接口 例 在此之前需要创建Customer类有的话就直接调用就行不需要再创建 package com.jdbc2.bean;import java.sql.Date;/*** * author Cat God 007* ORM编程思想object relational mapping对象关系映射* 一个数据表对应一个Java类* 表中的一条记录对应Java类的一个对象* 表中的一个字段对应Java类的一个属性*/ public class Customer {private int id; private String name;private String email;private Date birth;public Customer() {super();}public Customer(int id, String name, String email, Date birth) {super();this.id id;this.name name;this.email email;this.birth birth;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getEmail() {return email;}public void setEmail(String email) {this.email email;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth birth;}Overridepublic String toString() {return Customer [id id , name name , email email , birth birth ];}}定义针对Customer表的功能接口 import java.sql.Connection; import java.sql.Date; import java.util.List;import com.jdbc2.bean.Customer;//此接口用于规范针对customers表的常用操作 public interface CustomerDAO {/*** 将cust对象添加到数据库中*/void insert(Connection conn,Customer cust);/***针对指定的id,删除表中的一条记录*/void deleteById(Connection conn,int id);/** 针对内存中的cust对象去修改数据表中指定的记录*/void update(Connection conn,Customer cust);/** 针对指定的id查询对应的Customer对象(一条记录)*/Customer getCustomerById(Connection conn,int id);/** 查询表中的所有记录构成的集合*/ListCustomer getAll(Connection conn);/** 返回数据表中的数据条目数*/Long getCount(Connection conn);/** 返回数据表中最大的生日即最小的人的生日*/Date getMaxBirth(Connection conn);}4.XxxDAOImpl 继承BaseDAO实现XxxDAO接口 例 CustomerDAOImpl继承BaseDAO实现CustomerDAO接口 import java.sql.Connection; import java.sql.Date; import java.util.List;import com.jdbc2.bean.Customer;public class CustomerDAOImpl extends BaseDAO implements CustomerDAO{Overridepublic void insert(Connection conn, Customer cust) {String sql insert into customers(name,email,birth)values(?,?,?);update(conn,sql,cust.getName(),cust.getEmail(),cust.getBirth());}Overridepublic void deleteById(Connection conn, int id) {String sql delete from customers where id ?;update(conn,sql,id);}Overridepublic void update(Connection conn, Customer cust) {String sql update customers set name ?,email ?,birth ? where id ?;update(conn,sql,cust.getName(),cust.getEmail(),cust.getBirth(),cust.getId());}Overridepublic Customer getCustomerById(Connection conn, int id) {String sql select id ,name,email,birth from customers where id ?;Customer customer getInstance(conn,Customer.class,sql,id);return customer;}Overridepublic ListCustomer getAll(Connection conn) {String sql select id,name,email,birth from customers;ListCustomer list getForList(conn,Customer.class,sql);return list;}Overridepublic Long getCount(Connection conn) {String sql select count(*) from customers;return getValue(conn,sql);}Overridepublic Date getMaxBirth(Connection conn) {String sql select max(birth) from customers;return getValue(conn,sql);}}5. XxxDAOImplTest测试 对具体的XxxDAOImpl实现类i进行测试 例 import static org.junit.Assert.*;import java.sql.Connection; import java.sql.Date; import java.util.List;import org.junit.Test;import com.jdbc1.util.JDBC_Utils; import com.jdbc2.bean.Customer; import com.jdbc4.dao.CustomerDAOImpl;public class CustomerDAOImplTest {private CustomerDAOImpl dao new CustomerDAOImpl();Testpublic void testInsert() {Connection conn null;try {conn JDBC_Utils.getConnection();Customer cust new Customer(1,猫神,catgod007186.com,new Date(6323453234L));dao.insert(conn, cust);System.out.println(插入成功);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testDeleteById() {Connection conn null;try {conn JDBC_Utils.getConnection();dao.deleteById(conn, 16);System.out.println(删除成功);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testUpdateConnectionCustomer() {Connection conn null;try {conn JDBC_Utils.getConnection();Customer cust new Customer(18,马云,mayun123.com,new Date(567865437L));dao.update(conn, cust); System.out.println(修改成功);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testGetCustomerById() {Connection conn null;try {conn JDBC_Utils.getConnection(); Customer customer dao.getCustomerById(conn,10);System.out.println(customer);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testGetAll() {Connection conn null;try {conn JDBC_Utils.getConnection();ListCustomer list dao.getAll(conn);list.forEach(System.out::println);//注意遍历对象的方法} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testGetCount() {Connection conn null;try {conn JDBC_Utils.getConnection();Long count dao.getCount(conn);System.out.println(表中的数据共有 count 条);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}}Testpublic void testGetMaxBirth() {Connection conn null;try {conn JDBC_Utils.getConnection();Date maxBirth dao.getMaxBirth(conn);System.out.println(数据表中最年轻的人的生日是 maxBirth);} catch (Exception e) {e.printStackTrace();}finally {JDBC_Utils.closeResource(conn, null);}} }6. 创建测试文件测试多个方法可略过 在要创建的包下右键点击想要测试的java类点击new-------Other搜索 Junit test case如果不行就需要导入Junit 包 到处DAO就结束了如果需要编写针对Order表的DAO层就需要编写OrderDAO,OrderDAOImpl即可 其中可能会出现不少的小问题请多多包含 感谢大家的支持关注评论点赞 参考资料尚硅谷_宋红康_JDBC核心技术 DAO层Service层Controller层、View层
http://www.w-s-a.com/news/780815/

相关文章:

  • 网站做等保是按照什么定级别的做网站的资源哪里找
  • 免费建站网页无需登陆潍坊高端模板建站
  • 北京php网站建设软通动力外包值得去吗
  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好
  • 国税网站页面申报撤销怎么做网站空间如何买
  • 简单的购物网站模板跨境建站平台
  • 网站主机多大html网站地图生成
  • 可信赖的邵阳网站建设德清做网站
  • 上传文件网站根目录wordpress博客管理
  • 网站seo优缺点网站建设公司咨
  • 网站设计需要会什么建设网站的目的以及意义
  • 怎么样推广自己的网站wordpress register_form
  • 网站公司建站凤翔网站建设
  • 网站建设协低价格的网站建设公司
  • 研发网站建设报价深圳网站建设前十名
  • 宠物发布网站模板wordpress中文免费电商模板
  • 济南做网站创意服装品牌策划公司
  • 本地电脑做视频网站 外网连接不上软件商城源码
  • 足球直播网站怎么做crm系统介绍
  • 株洲网站建设联系方式东莞凤岗网站制作
  • 小纯洁网站开发如何注册域名
  • 网上做试卷的网站如何把刚做的网站被百度抓取到
  • 滕州网站建wordpress用户中心按钮不弹出
  • 清远新闻最新消息福建seo搜索引擎优化
  • 凡客建站网微信网站怎么做的
  • 网站建设费怎么写会计科目行业网站建设公司