java中关于数据的管理有很多的框架,如hibernate, mybatis等,但我最开始学习的就是JDBC,我觉得JDBC还是很不错的,它让我更深层次的了解了数据的操作,今天我将我写过的JDBC基础类再写一遍!加深下记忆! ! !
<强>先将通用的增查实现扩展类BaseDAO贴上强>
包com.shude.DAO; 进口java.lang.reflect.Field; 进口java.lang.reflect.Method; 进口java.lang.reflect.ParameterizedType; 进口java.lang.reflect.Type; 进口java.sql.Connection; 进口java.sql.DatabaseMetaData; 进口java.sql.PreparedStatement; 进口java.sql.ResultSet; 进口java.sql.SQLException; 进口java.util.ArrayList; 进口java.util.LinkedHashMap; 进口并不知道; 进口java.util.Map; 进口java.util.Map.Entry; 进口com.shude.DAO.im.IBaseDAO; 进口com.shude.util.ConfigUtil; 进口com.shude.util.JdbcUtil; 进口com.shude.util.PageUtil;/* * *通用的增删改查实现类 * @author管理员 * * @param & lt; E> */公开课BaseDAO实现IBaseDAO { 保护静态ConfigUtil ConfigUtil; 保护Class<& # 63;比;cls;/* * *获取包名、类名 */扩展公共BaseDAO () { Class<& # 63;比;clsTemp=this.getClass (); 型类型=clsTemp.getGenericSuperclass (); 如果(类型instanceof ParameterizedType) { 类型[]类型=((ParameterizedType)类型).getActualTypeArguments (); cls=(Class<& # 63;祝辞)类型[0]; } }/* * *获取对应类的数据库中的表名 */静态{ configUtil=ConfigUtil.newInstance ("/tabORM.properties "); }/* * *保存方法 */公共布尔saveInfo (E E) { 布尔标志=true; 尝试{ Class<& # 63;比;cls=e.getClass ();//获取表名 字符串表=configUtil.getVal (cls.getName ());//获取主键 字符串prykey=getPrimKey(表);//记录数据列 List filedList=new ArrayList ();//获取sql语句 字符串sql=getsavesql(表、prykey filedList);//执行sql 国旗=excuteSQL (sql, e, filedList); }捕捉(异常e1) { 国旗=false; e1.printStackTrace (); } 返回国旗; }/* * *修改方法 */公共空间modifyInfo (E E) { Class<& # 63;比;cls=e.getClass ();//获取表名 字符串表=configUtil.getVal (cls.getName ());//获取主键 字符串prykey=getPrimKey(表);//记录数据列 List filedList=new ArrayList ();//获取sql语句 字符串sql=getmodifysql(表、prykey filedList);//添加主键到集合 filedList.add (prykey);//执行sql excuteSQL (sql, e, filedList); }/* * *删除方法 */公共空间deleteInfo(对象id) {//获取表名 字符串表=configUtil.getVal (cls.getName ());//获取主键 字符串prykey=getPrimKey(表);//获取sql语句 字符串sql="更新" +表名+”设置状态=' 1 ',“+ prykey +“=& # 63;”; 连接康涅狄格州=零; PreparedStatement pstm=零; 尝试{ 康涅狄格州=JdbcUtil.getConn (); pstm=conn.prepareStatement (sql); pstm。setObject (id); pstm.execute (); }捕捉(异常e) { e.printStackTrace (); 最后}{ JdbcUtil.closeConn(康涅狄格州); } }/* * *查询全部方法 */公共空间queryinfo (PageUtil pageUtil) { E E=pageUtil.getEntity ();//获取表名 字符串表=configUtil.getVal (cls.getName ());//获取查询条件 Object> Map<字符串;paramMap=getParamMap (e);//获取sql 字符串sql=getquerySQL (paramMap、表); sql +=毕拗? # 63;& # 63;”; paramMap。把(页大小(pageUtil.getPageSize () - 1) * pageUtil.getPageNum ()); paramMap。put (" pageNum ", pageUtil.getPageNum ());//执行SQL excutQuery (pageUtil、sql、paramMap表名); }/* * *单个查询方法 */公共E queryById(对象id) {//获取表名 字符串表=configUtil.getVal (cls.getName ());//获取主键 字符串prykey=getPrimKey(表);//获取sql 字符串sql=" select * from " +表名+“1=1和“+ prykey +“=& # 63;”;//执行SQL 连接康涅狄格州=零; PreparedStatement pstm=零; ResultSet rs=零; E E=零; 尝试{ 康涅狄格州=JdbcUtil.getConn (); pstm=conn.prepareStatement (sql); pstm。setObject (id); rs=pstm.executeQuery (); List 列表=getEntityList (rs); e=list.get (0); }捕捉(例外的前女友){ ex.printStackTrace (); 最后}{ JdbcUtil.closeConn(康涅狄格州); } 返回e; }/* * *获取总条数 * @param paramMap * @param表 * @return */私人整数getPagenumsss (Map JDBC实现通用的增删改查基础类方法