通用增删改查java类_通用增删改查

packagecom.dao.impl;importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.List;importcom.dao.BaseDao;importcom.db.DBConn;importcom.db.impl.DBConnJdbc;public class BaseDaoImpl implements BaseDao{

DBConn db= newDBConnJdbc();int r=0;privateClass clazz;publicBaseDaoImpl(){

clazz= this.getClass();

Type t=clazz.getGenericSuperclass();

ParameterizedType pe=(ParameterizedType) t;

clazz= (Class) pe.getActualTypeArguments()[0];

System.out.println(clazz);

}//添加

@Overridepublic int add(Entity obj) throwsException {

Connection con=db.getConn();

String tables=clazz.getSimpleName();

Field[] fields=clazz.getDeclaredFields();

String sql= "insert into " + tables + " values(null";for (int i = 1; i < fields.length; i++) {

sql+= ",?";

}

sql= sql + ")";

System.out.println(sql);

PreparedStatement pstmt= null;

pstmt=con.prepareStatement(sql);for (int i = 1; i < fields.length; i++) {

String name= "get"+Character.toUpperCase(fields[i].getName().charAt(0));

name= name + fields[i].getName().substring(1);

Method m=clazz.getMethod(name);

Object value=m.invoke(obj);

pstmt.setObject(i, value);

}

r=pstmt.executeUpdate();

db.close(pstmt);

db.close(con);returnr;

}//删除

@Overridepublic int delete(int id) throwsException {

Connection con=db.getConn();

String tables=clazz.getSimpleName();

Field[] fields=clazz.getDeclaredFields();

String idName= fields[0].getName();

String sql= "delete from " + tables + " where "+idName+" ="+id;

System.out.println(sql);

PreparedStatement pstmt= null;

pstmt=con.prepareStatement(sql);

r=pstmt.executeUpdate();

db.close(pstmt);

db.close(con);returnr;

}//更新

@Overridepublic int update(Entity obj) throwsException {

Connection con=db.getConn();

String tables=clazz.getSimpleName();

String sql= "update "+tables+" set ";

Field[] fields=clazz.getDeclaredFields();

String idName= fields[0].getName();for(int i=1;i

sql+= fields[i].getName() + "=?,";

}

sql= sql.substring(0,sql.length()-1)+" where "+idName+" = ?";

System.out.println(sql);

PreparedStatement pstmt= null;

pstmt=con.prepareStatement(sql);for(int i =1;i

String methodName= "get"+Character.toUpperCase(fields[i].getName().charAt(0))+fields[i].getName().substring(1);

Method m=clazz.getMethod(methodName);

pstmt.setObject(i,m.invoke(obj));

}

String FiledFirstName= "get"+Character.toUpperCase(fields[0].getName().charAt(0))+fields[0].getName().substring(1);

Method m2=clazz.getMethod(FiledFirstName);

pstmt.setInt(fields.length, (Integer)m2.invoke(obj));

r=pstmt.executeUpdate();

db.close(pstmt);returnr;

}//根据id查询

@Overridepublic Entity get(int id) throwsException {

Connection con=db.getConn();

Field[] fields=clazz.getDeclaredFields();

String idName= fields[0].getName();

String sql= "select * from "+clazz.getSimpleName() + " where "+idName+" =" +id;

System.out.println(sql);

PreparedStatement pstmt= null;

pstmt=con.prepareStatement(sql);

ResultSet rs=pstmt.executeQuery();

Entity entity=(Entity) clazz.newInstance();if(rs.next()){//Field[] fields = clazz.getDeclaredFields();

for(int i=0;i

String methodName= "set" +Character.toUpperCase(fields[i].getName().charAt(0))+fields[i].getName().substring(1);

Method m=clazz.getDeclaredMethod(methodName, fields[i].getType());

Object value=rs.getObject(fields[i].getName());

System.out.println(methodName+ "=========" +value);

m.invoke(entity, value);

}

}

db.closeAll(rs, pstmt, con);returnentity;

}//全查

@Overridepublic List getList() throwsException {

Connection con=db.getConn();

String sql= "select * from "+clazz.getSimpleName();

PreparedStatement pstmt= null;

pstmt=con.prepareStatement(sql);

List list = new ArrayList();

ResultSet rs=pstmt.executeQuery();while(rs.next()){

Entity entrty=(Entity)clazz.newInstance();

Field[] fields=clazz.getDeclaredFields();for(int i=0;i

String methodName= "set"+Character.toUpperCase(fields[i].getName().charAt(0))+fields[i].getName().substring(1);

Method m=clazz.getMethod(methodName, fields[i].getType());

m.invoke(entrty, rs.getObject(fields[i].getName()));

}

list.add(entrty);

}

System.out.println(sql);

db.closeAll(rs, pstmt, con);returnlist;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供完整的代码实现,因为这需要考虑许多因素,例如数据源、数据结构、业务逻辑等。不同的应用场景可能需要不同的实现方式。但是,我可以为您提供一些基本的思路和建议,帮助您实现通用增删改查模块。 1. Freemarker是一种模板引擎,可以将数据填充到预先定义好的模板中,生成最终的输出。因此,您需要先定义好模板,包括表单、列表、详情等页面的模板。 2. 在Java中,您可以使用Spring框架来实现通用增删改查功能。Spring提供了许多实用的组件和技术,如JdbcTemplate、MyBatis、Hibernate等,可以方便地访问数据库和处理数据。 3. 针对不同的实体对象,您可以编写通用的Controller和Service,实现基本的增删改查操作。其中,Service负责处理业务逻辑,Controller负责处理请求和响应。 4. 在Controller中,您需要定义好各个请求的路由和参数,如查询参数、分页参数等。同时,还需要处理各种异常情况,如数据格式错误、权限问题等。 5. 在Service中,您需要定义好各种业务逻辑,如数据验证、数据转换、事务处理等。同时,还需要处理各种异常情况,如数据不存在、数据冲突等。 6. 针对不同的实体对象,您需要编写对应的DAO接口和实现,实现数据访问和数据操作。其中,DAO接口定义了基本的增删改查操作,实现则负责具体的数据库访问和操作。 7. 在DAO实现中,您可以使用JdbcTemplate、MyBatis、Hibernate等技术访问数据库。同时,还需要处理各种异常情况,如SQL语句错误、数据库连接失败等。 综上所述,实现通用增删改查模块需要考虑许多因素,包括模板设计、路由设计、参数设计、业务逻辑设计、异常处理等。如果您遇到具体问题,可以在社区中提问,我们会尽力帮助您解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值