package com.zdyn.utils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
public static List findAll(Object obj,Connection conn) throws Exception{
Class clazz=obj.getClass();
Method[] m=clazz.getMethods();
Field[] f=clazz.getDeclaredFields();
List list=new ArrayList();
String sql="select * from "+obj.getClass().getSimpleName().toLowerCase();
System.out.println(sql);
//System.out.println(sql);
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
while(rs.next()){
Object obj2=clazz.newInstance();
for(int i=0;i<f.length;i++){
String n=f[i].getName();
Object ob=rs.getObject(i+1);
if(ob==null){
ob="a";//��ֹ���Ϊnullʱ���ָ���쳣
}
if(ob.getClass().equals(java.lang.String.class)){
/*
* ƴ��Set������
*/
for(int j=0;j<m.length;j++){
if(("set"+n).equalsIgnoreCase(m[j].getName())){
m[j].invoke(obj2, rs.getString(n));
}
}
}else{
for(int j=0;j<m.length;j++){
if(("set"+n).equalsIgnoreCase(m[j].getName())){
m[j].invoke(obj2, rs.getInt(n));
}
}
}
}
list.add(obj2);
}
return list;
}
public static void save(Object obj,Connection conn) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SQLException{
Class clazz=obj.getClass();
Method[] m=clazz.getDeclaredMethods();
Field[] f=clazz.getDeclaredFields();
String table=clazz.getSimpleName().toLowerCase();
String sql="";
for(int i=0;i<f.length;i++){
sql=sql+f[i].getName()+",";
}
sql=sql.substring(0, sql.length()-1);
String sql2="";
for(int j=0;j<f.length;j++){
String str="get"+f[j].getName();
for(int k=0;k<m.length;k++){
if(str.equalsIgnoreCase(m[k].getName())){
//�жϡ����ط���bug
/*
* new ��4������û��������Ҫ������
*/
Object p=m[k].invoke(obj);
if(p==null){
p="null";
sql2=sql2+p+",";
}else{
sql2=sql2+"'"+p+"'"+",";
}
}
}
}
sql2=sql2.substring(0,sql2.length()-1);
sql="insert into "+table+"("+sql+")"+" values"+"("+sql2+")";
System.out.println(sql);
PreparedStatement pst=conn.prepareStatement(sql);
pst.executeUpdate();
}
public static void update(Object obj,Connection conn) throws Exception{
//��
Class clazz=obj.getClass();
Method[] m=clazz.getMethods();
Field[] f=clazz.getDeclaredFields();
/*
* ƴ��Sql
*/
String str1="";
String str3="";
for(int i=0;i<f.length;i++){
//str1=str1+","+f[i].getName()+"="+"?";
for(int j=0;j<m.length;j++){
String str2="get"+f[i].getName();
if(str2.equalsIgnoreCase(m[j].getName())){
str1=str1+f[i].getName()+"="+"'"+m[j].invoke(obj)+"'"+",";
if("getId".equalsIgnoreCase(m[j].getName())){
str3=m[j].invoke(obj).toString();
}
}
}
}
str1=str1.substring(0,str1.length()-1);
String sql="update "+clazz.getSimpleName().toLowerCase()+" set "+str1+" where id="+"'"+str3+"'";
System.out.println(sql);
PreparedStatement pst=conn.prepareStatement(sql);
pst.execute();
}
public static void delById(Object obj,String id,Connection conn) throws SQLException{
Class clazz=obj.getClass();
String table=clazz.getSimpleName();
String sql="delete from "+table+" where id="+"'"+id+"'";
System.out.println(sql);
conn.prepareStatement(sql).executeUpdate();
}
}
相关推荐
真·奥义 ssm整合BaseDao
真·奥义 ssm整合BaseDao 前言 本来我一直使用的是逆向工程生成的Mybatis和pojo,但是前几天和一位大佬合作,大佬说他用惯了BaseDao,没办法,我只好学习BaseDao,在网上看了很多同学的BaseDao,坑爹啊!只给你贴出主要代码,不给你导包的代码,看上去能复制,其实复制进去就一大堆红线,有的还凭空冒出个工具类…不说了,都是泪啊!下面是我的ssm整合的BaseDao. 首先是...
BaseDao或BaseRepository类的设计
packageorg.mo.open.common.repository; importjava.io.Serializable; importjava.util.Date; importjava.util.List; /** * *@authormoziqi * *...
万能的BaseDao设计
BaseDao设计的初衷是为了方便我们的使用,不用写很多的重复的代码,今天就说说它的设计思路。我们就是要用反射加泛型加面向接口编程来实现,从网上找了一个UML图,我们就用下图大体简单设计一下。 大体按图中的内容写吧,首先定义一个interface BaseDao,
Kotlin基础(六)接口、泛型
接口定义:Interface 接口名{//各种属性或方法定义} //接口和泛型interface IBaseDao<T> { val city : String get() = "北京" var grade : Int fun <T>add(t : T) fun del(id: Int) fun update(id: Int, stu: Student)
spring data jpa 定义全局接口BaseDao
好,现在我要搭一个项目,我想定义一个BaseDao,然后直接让其他模块的dao直接继承我这个BaseDao,BaseDao有通用的方法也有spring data jpa提供的便捷方法那就新建一个BaseDao呗,这个BaseDao应该是继承JpaRepository,JpaSpecificationExecutor因为我们想用spring data jpa,然后你再定义自己一些常用方法,例如myM
RocketMQ 5.3.1 集成 Spring Boot 3.4.3 就这么简单
RocketMQ 是一个分布式消息中间件,支持发布/订阅模型,具有高吞吐量、高可用性和事务消息等特性。它广泛应用于日志处理、订单系统和异步任务等场景。Spring Boot 3.4.3 集成 RocketMQ 5.3.1 的过程异常简单,仅需少量配置即可实现消息的生产和消费。本文从环境搭建到代码实现,覆盖了核心步骤。
Kotlin中使用Room数据库
最近在kotlin环境下,写了一个room数据库的demo,各种情况跑了一下,在此总结一下。 涉及情况:增、删、改、查、排序 1、环境搭建 1.1、Android Studio下,新建一个kotlin项目, 1.2、去app的build.gradle中进行一些配置 顶部增加 apply plugin: 'kotlin-kapt' 然后 defaultConfig { … javaCompi...
Windows显卡TDR超时导致Unity崩溃?手把手教你修改注册表延长响应时间
本文详细解析了Windows显卡TDR超时导致Unity崩溃的问题,并提供了修改注册表延长响应时间的完整解决方案。通过调整TdrDelay和TdrDdiDelay键值,开发者可以有效避免D3D11设备丢失错误,提升Unity编辑器的稳定性。文章还包含显卡驱动优化、系统性能调优等实用技巧,帮助开发者彻底解决编辑器崩溃问题。
java basedao t_BaseDAO使用
BaseDao接口的过人之处在于:一般是提供从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的底层数据操作自定义类。由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码(从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码)。其次对于泛型是...
USRP B210 运行gnuradio时 FPGA固件版本冲突错误解决方法
事情起源于昨天拿到USRP后开始调试,结果整了一个下午都没解决这个问题。 昨天晚上自己思考了一下,觉得还是版本问题。 首先,uhd_find_devices和uhd_usrp_probe均可以正常运行,没有报错,固件正常加载,序列号也可看到。 teray@teray-X550JK:~$ uhd_find_devices [INFO] [UHD] linux; GNU C++ version 7.5...
类银河恶魔城学习记录1-1 Player状态机的搭建 P28
什么是状态机?一篇文章就够了 - 知乎说实话,目前并不能深入理解状态机的奇妙之处(当然,我觉得状态机作为教程的重要组成部分是不得不理解的,所以以下我会对游戏教程内的状态机做一些我认为的解释,如有错误,请多包涵)
BaseDAO封装
将从数据库获取信息,都需要写一遍使用util工具类建立连接,使用util工具类断开连接...写在一个方法里面,需要使用时只要写sql语句,传List参数列表,调用该方法->就能实现增删查改操作...BaseDAO进阶——要用到来动态获取实体类数据——并给数据保存在中,针对。
KUKA-外部自动运行模板程序——个人设计模式&思路
用于说明KUKA与西门子PLC外部自动交互模板的设计思路与使用流程
java分层开发中的BaseDao
这里介绍的是在不使用持久层框架的情况下,用Java反射写的BaseDao,简化Dao层的操作,让Dao的实现层每个方法体只有一行。所有的Dao的实现类继承BaseDao。 下面具体讲如何使用BaseDao 。 1、BaseDao 的写法 package dao; import java.lang.reflect.Field; import java.lang.reflect.Me
linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上
tun/tap设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。tun/tap对于硬件网络设备而言,一端连接的是物理网络,一端连接的是网络协议栈。对于tun/tap设备而言,一端连接的是应用程序(通过 字符设备文件),一端连接的是网络协议栈。
【STM32系统】基于STM32+手机APP设计的智能停车场系统
功能简介1、进出停车场时需要刷卡,进行一个记时、计费的功能。2、停车位配有超声波检测,主要识别车位是否被占用。3、车位区域配有OLED显示屏,用户可以通过显示屏看到空闲车位。4、车位配有车位灯。当用户找不到车位可以通过手机点亮车位灯5、停车场配有温湿度检测和烟雾检测模块。当环境发生异常状态。会触动紧急报警。6、停车场信息会通过Wi-Fi发送数据上传至阿里云。用户可以通过手机了解到停车场空闲车位和停车时间、费用。
BaseDao接口方法抽取
BaseDao接口方法抽取BaseDao接口方法抽取一、问题:二、解决方案:三、原理图四、代码实例4-1、Jdbc版的BaseDao如何使用代码图解4-2、Hibernate版的BaseDaoBaseDaoImpl如何使用代码五、总结 BaseDao接口方法抽取 一、问题: 通常来说一个项目中,我们会使用到多个Dao,例如一个学生管理系统,可能就包含AdminDao,StudentDao等模块...
TC3XX - MCAL知识点(三十三):基于EB Tresos配置Tc3xx的MCAL代码如何产生中心对称的三相六路发波波形
本文用于记录如何在英飞凌 tc3xx 芯片的应用开发中,借助 EB Tresos 配置工具生成的配置代码与 MCAL 源码相结合,进而实现三相六路中心对称互补的 PWM 输出效果。外部资源需求:EB Tresos23.0以上、Tasking\Hightec编译器、示波器\逻辑分析仪。
java-BaseDao
package dao; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class BaseDao { private static String driver; private static String url...
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
BaseDao的封装
书城项目,basedao封装模板(参考) public abstract class BaseDao { QueryRunner queryRunner = new QueryRunner(); /** * update方法执行insert、update、delete语句 * * @return */ public int update(String sql, Obje...
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
Basedao
Basedao 为什么要建立basedao: 若有新的功能需要添加,但是该功能与现有的dao层的接口的功能无关, 就需要新建一个dao层,实现要添加的方法,如果有和userdao或者recorddao相类似,但是参数类型不同的方法,也得再写一遍方法,这样大大提高了代码的工作量。所以建立basedao,把通用的方法放到里面,让其他的dao层接口继承该接口,其他的dao层实现类也继承该实现...
刚刚,改造了下BaseDao……
今天在上课的时候,带着学生们写底层的jdbc连接数据库并且对数据表进行增删改查,写的那就一个痛苦啊……从创建实体类到写Dao层代码再到表现层的Jsp页面,写了好久好久……终于写完...
BaseDao封装JavaWeb的增删改查
BaseDao封装JavaWeb的增删改查
NC65通过BaseDAO操作数据库
完整代码下载链接:https://download.youkuaiyun.com/download/d_c_hao/10987189 接口类: public interface IMyDB { /** * 根据表名与某一字段条件返回list */ public List<Map<String, String>> doQueryList(Strin...
BaseDao入门使用
BaseDao是一个基于数据访问对象(Data Access Object,简称 DAO)设计模式的通用数据库操作类,它封装了对数据库的基本操作,如增加、删除、修改和查询等。使用 BaseDAO 可以简化数据库操作的代码编写,提高开发效率。
baseDao的用法
baseDao的用法: BaseDAO dao= new BaseDAO(); for(int j=0;j InspectReportB2VO[] bvo2 = (InspectReportB2VO[])vos[0].getChildren(nc.vo.bgymem.qc40.InspectReportB2VO.
555



被折叠的 条评论
为什么被折叠?



