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

漳州微网站建设公司推荐西安高端网站制作公司哪家好

漳州微网站建设公司推荐,西安高端网站制作公司哪家好,什么类型的网站好做,大淘客怎么自己做网站反射写一个通用的dao层1. 学了反射#xff0c;就得学会搞事情2. 反射写dao具体实现1. 学了反射#xff0c;就得学会搞事情 我想怎么对实体类操作#xff0c;就对实体类操作 想实现通用的dao#xff0c;要满足的条件#xff1a; 实体类名与表名一样实体字段名与表字段名一… 反射写一个通用的dao层1. 学了反射就得学会搞事情2. 反射写dao具体实现1. 学了反射就得学会搞事情 我想怎么对实体类操作就对实体类操作 想实现通用的dao要满足的条件 实体类名与表名一样实体字段名与表字段名一样实体类定义的属性顺序与表名字段名顺序一样使用dao修改增加时实体类的属性都要有赋值因为根据反射拿到所有属性值和属性名来拼接成sql语句滴 如何用反射操作操作 拼接sql语句拿到表名拿到实体类的字段拿到字段的值 2. 反射写dao具体实现 BaseDao 拿到连接和释放资源 package com.lovely.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;public class BaseDao {static {try {Class.forName(oracle.jdbc.OracleDriver);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConn() {Connection conn null;String url jdbc:oracle:thin:127.0.0.1:1521:orcl;try {conn DriverManager.getConnection(url, scott, scott);} catch (SQLException e) {e.printStackTrace();}return conn;}public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) {try {if (rs ! null)rs.close();if (ps ! null)ps.close();if (conn ! null)conn.close();} catch (SQLException e) {e.printStackTrace();}} } 增删改查万能写法 package com.lovely.dao;import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.List;public class CommonDao {/*** param entity 给定一个初始化参数的实体来做添加操作* return 返回数据库受影响行数*/public int add(Object entity) {int count -1;Class? c entity.getClass();StringBuffer sql new StringBuffer();// insert into tab_name values (seq_student.nextval, ?, ?, ? ...);sql.append(insert into c.getSimpleName() values (seq_ c.getSimpleName() .nextval);// 拿到实体类私有属性对象的数组Field[] fs c.getDeclaredFields();Field.setAccessible(fs, true);// 排除主键for (int j 1; j fs.length; j) {sql.append(, ?);}sql.append());System.out.println(sql);Connection conn BaseDao.getConn();PreparedStatement ps null;try {ps conn.prepareStatement(sql.toString());// 赋值for (int i 1; i fs.length; i) {ps.setObject(i, fs[i].get(entity));}count ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);} return count;}/*** * param c 描述类的类对象* return 这张表在数据库里面所有的数据*/public ListObject queryAll(Class? c) {ArrayListObject list new ArrayListObject();String sql SELECT * FROM c.getSimpleName();Connection conn BaseDao.getConn();PreparedStatement ps null;ResultSet rs null;conn BaseDao.getConn();try {ps conn.prepareStatement(sql);rs ps.executeQuery();Field[] fs c.getDeclaredFields();Field.setAccessible(fs, true);while (rs.next()) {// 创建实体类对象Object entity c.newInstance();// 为实体类的每个属性赋值for (int i 0; i fs.length; i) {// 取结果集中的值Object value rs.getObject(fs[i].getName());// oracle 和 Java 中的类型不一样 设置属性值时 可能报错if (fs[i].getType() Integer.class) {value rs.getInt(fs[i].getName());} else if (fs[i].getType() Double.class) {value rs.getDouble(fs[i].getName());} else if (fs[i].getType() Timestamp.class) {value rs.getTimestamp(fs[i].getName());}// Can not set java.sql.Timestamp field com.lovely.entity.Product.pdate to java.sql.Date// 属性是Timstamp类型 Oracle获取的值是 java.sql.Date类型 /*if (fs[i].getType() Timestamp.class value.getClass() java.sql.Date.class) {// 转型java.sql.Date d (Date) value; value new Timestamp(d.getTime());}*/// 为实体类属性赋值fs[i].set(entity, value);}list.add(entity);}} catch (SQLException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, rs);}return list;}/*** * param entity 传入主键即可* return 返回主键对应的对象*/public Object queryOne(Object entity) {Object obj null;Class? c entity.getClass();Field[] fs c.getDeclaredFields();Field.setAccessible(fs, true); // 可访问私有属性String sql select * from c.getSimpleName() where fs[0].getName() ?;Connection conn BaseDao.getConn();PreparedStatement ps null;ResultSet rs null;try {ps conn.prepareStatement(sql);ps.setObject(1, fs[0].get(entity));rs ps.executeQuery();if (rs.next()) {// 创建当前实体类对象obj c.newInstance();for (int i 0; i fs.length; i) {// 结果集中每个列的值Object value rs.getObject(fs[i].getName());// 判断属性值的类型if (fs[i].getType() Integer.class) {value rs.getInt(fs[i].getName());} else if (fs[i].getType() Double.class) {value rs.getDouble(fs[i].getName());} else if (fs[i].getType() java.sql.Timestamp.class) {value rs.getTimestamp(fs[i].getName());}// 为每个属性设置值fs[i].set(obj, value);}}} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, rs);}return obj; }/*** * param entity 要修改的实体对象 实体对象的值都得被初始化* return 返回受影响行数*/public int update(Object entity) {int count -1;Class? c entity.getClass();StringBuffer sql new StringBuffer();// update tab_name set * ?, * ?, * ? ... where primary_key ?sql.append(update c.getSimpleName() set );Field[] fs c.getDeclaredFields();Field.setAccessible(fs, true);// 拼接列名try {for (int i 1; i fs.length; i) {if (i fs.length - 1)sql.append(fs[i].getName() ?, );elsesql.append(fs[i].getName() ? );}} catch (IllegalArgumentException e) {e.printStackTrace();}// 拼接条件sql.append(where fs[0].getName() ?);System.out.println(sql);Connection conn BaseDao.getConn();PreparedStatement ps null;try {ps conn.prepareStatement(sql.toString());// 设置 sql 中参数的值for (int i 1; i fs.length; i) {ps.setObject(i, fs[i].get(entity));}// 设置主键值ps.setObject(fs.length, fs[0].get(entity));count ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);}return count;}/*** * param entity 要被删除的对象传入主键即可* return 返回受影响行数*/public int delete(Object entity) {int count -1;Class? c entity.getClass();Field primaryKey c.getDeclaredFields()[0];primaryKey.setAccessible(true);String sql delete from c.getSimpleName() where primaryKey.getName() ?;Connection conn BaseDao.getConn();PreparedStatement ps null;try {ps conn.prepareStatement(sql);ps.setObject(1, primaryKey.get(entity));count ps.executeUpdate();} catch (SQLException | IllegalArgumentException | IllegalAccessException e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);}return count;}} 本代码适用Oraclemysqlsqlserver稍微改变下可用。
http://www.zqtcl.cn/news/266486/

相关文章:

  • 汕头集团做网站方案建设网站要买空间吗
  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学
  • 网站建设推广重要性河北高端网站建设
  • 网站的seo方案怎么做wordpress自动转内链
  • 番禺手机网站制作推广wordpress远程数据库
  • 企业网站seo外包 s深圳国内设计网站
  • 临海高端营销型网站建设地址免费网站alexa排名查询
  • 做企业网站的轻量级cms建设电子商务网站流程图
  • 淘宝网站设计分析国内在线免费服务器
  • wordpress网站文章加密网站建设 博采网络
  • 哪个网站做美食好一点网络运维个人工作总结
  • 做网红用哪个网站教人做策划的网站
  • 百度免费网站怎样建设wordpress模板目录结构
  • 长沙简单的网站建设公司wordpress+手机应用
  • 用spl做网站wordpress不用缓存
  • 微网站模板标签网站被攻击怎么让百度重新蜘蛛自动抓
  • 自己想做一个网站网页背景怎么设置
  • 国外做项目的网站软件定制外包平台
  • 做网站要用什么软件房地产建设网站
  • 龙岗爱联有学网站建设装饰公司简介
  • pc端网站怎么做自适应哪个公司网站备案快
  • 品牌网站建设黑白I狼J烟台开发区建设业联合网站
  • 做视频网站可以自学吗php html5企业网站源码
  • 阿里云怎么部署网站引流推广平台是什么意思
  • 江山建设工程信息网站营销网讯
  • 网站制作公司 沈阳上海建设主管部门网站
  • 网站建设前期如何做好市场定位分析网络推广主要工作内容
  • 做一个网站的流程是什么金融网站建设方案
  • 汽车维修保养网站模板北京网站建设知名公司排名