JDBC之封装通用的BaseDao


以上篇文章(JDBC之在分层结构中实现业务)为基础,进行封装更新操作;


一、持久层(数据访问层)


在dao包下创建通用方法接口BaseDao

public interface BaseDao{public int executeUpdate(String sql , Object[] param);
}

在dao.impl包下创建接口BaseDao的实现类;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;import com.bjsxt.commons.JdbcUtil;
import com.bjsxt.dao.BaseDao;public class BaseDaoImpl implements BaseDao{//封装通用的dml操作public int executeUpdate(String sql , Object[] param){Connection conn = null;PreparedStatement ps = null;int rows = 0;try{conn = JdbcUtil.getConnection(); conn.setAutoCommit(false);ps = conn.prepareStatement(sql);//得到参数的个数ParameterMetaData pmd = ps.getParameterMetaData();//绑定参数for(int i=0;i<pmd.getParameterCount();i++){ps.setObject(i+1,param[i]);}rows = ps.executeUpdate();conn.commit();}catch(Exception e){JdbcUtil.rollback(conn);e.printStackTrace();}finally{JdbcUtil.closeResource(ps,conn);}return rows;  }
}

让DepartmentsDao接口继承BaseDao接口,并添加更新数据的抽象方法;

public interface DepartmentsDao extends BaseDao {public int updateDept(Departments dept);
}

让DepartmentsDaoImpl继承BaseDaoImpl类,并实现DepartmentsDao中的更新数 据的方法;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.bjsxt.commons.JdbcUtil;
import com.bjsxt.dao.DepartmentsDao;
import com.bjsxt.pojo.Departments;public class DepartmentsDaoImpl extends BaseDaoImpl implements DepartmentsDao{public int updateDept(Departments dept){String sql = "update departments set department_name = ? , location_id = ?  where department_id = ? ";Object[] param = new Object[]{dept.getDepartmentName() , dept.getLocationId() , dept.getDepartmentId()};return this.executeUpdate(sql,param); }
}

二、业务层


将service包下的DepartmentsService接口中添加更新数据的抽象方法;

import com.bjsxt.pojo.Departments;public interface DepartmentsService{public int modifyDepartments(Departments dept);
}

将service.Impl包下的DepartmentsServiceImpl类,实现DepartmentsService中的更新数据方法;

import com.bjsxt.dao.DepartmentsDao;
import com.bjsxt.dao.impl.DepartmentsDaoImpl;
import com.bjsxt.pojo.Departments;
import com.bjsxt.serivce.DepartmentsService;public class DepartmentsServiceImpl implements DepartmentsService{public int modifyDepartments(Departments dept){DepartmentsDao deptDao = new DepartmentsDaoImpl();return deptDao.updateDept(dept);}
}

三、测试类


将部门id为52的部门改为“陆上部”地点ID为40;

public class Test{public static void main(String[] args){Departments dept = new Departments();dept.setDepartmentName("陆上部");dept.setLocationId(40);dept.setDepartmentId(52);DepartmentsService ds = new DepartmentsServiceImpl();int flag = ds.modifyDepartments(dept);System.out.println(flag);} }

JDBC之封装通用的BaseDao相关推荐

  1. java数据库实体层封装_Java通过JDBC封装通用DAO层

    在项目中,我们要不断的和数据库打交道,为了提高数据库操作的执行效率和增加代码的复用性,将重新封装一个Dao层,也就是数据访问层 ,用来访问数据库实现数据的持久化. 虽然现在有不少数据持久化层的框架,但 ...

  2. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...

  3. java中jdbc的封装笔记_JDBC封装学习笔记(三)---面向对象的JDBC,使用preparedStatement...

    使用PreparedStatement对象:为什么要使用PreparedStatement 原因:(1)使用Statement需要拼接SQL,太费劲,也容易出错. String sql = " ...

  4. java basedaoimpl_java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

    在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每 ...

  5. python菜鸟excel教程-Python菜鸟之路: 封装通用excel操作

    前言 最近工作常要干些excel导入导出的活,用python来做最方便,写的多了,就想封装下读写的操作,后续通用,python菜鸟,大佬轻喷(不服可以来写Java ....当我没说) 设计 1.pyt ...

  6. JDBC、封装JDBC连接池、第三方连接池工具

    主要内容: JDBC简介 JDBC来源 通过代码实现JDBC JDBC的改进需求 JDBC改进的代码实现 JDBC使用的设计模式 封装连接池 封装JDBC连接池 ThreadLoacl的使用 Thre ...

  7. rn_xtcxyczjh-1 功能 封装 通用 回调

    2015.09.08 – 09.15 读xtcxyczjh(系统程序员成长计划)---- 学习程序设计方法. 笔记中的表达极差.关于C语言的"创建双向链表"."封装&qu ...

  8. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、

    1.0 封装一个通用的工具栏 目标:封装一个通用的工具栏供大家使用 1.1 通用工具栏的组件结构 在后续的业务开发中,经常会用到一个类似下图的工具栏,作为公共组件,进行一下封装 组件 src/comp ...

  9. Flutter - 一个fultter练习项目(仿写微信UI、实现一些常用效果、封装通用组件和工具类)

    demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 pwd:123456 代码不定期更新 注:Flut ...

最新文章

  1. 【Android】Pixel 2 解锁 Bootloader
  2. 三维空间碰撞问题;空间中两直线的最短距离及最近点
  3. Cut the Sequence(POJ3017)
  4. Photoshop初涉---第一次系统地学习
  5. Sky Line 与 ArcEngine的粘合剂 Composite UI AB?
  6. 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...
  7. proteus如何添加stm32_新手入门轻松掌握 STM32 串口应用
  8. OPENGL 点击与选取的基础---坐标变换
  9. 有趣的二进制—高效位运算
  10. X4扭曲字体或图形 coreldraw_CorelDRAW X4案例教程上-电子教案文档.ppt
  11. C1083,无法打开包括文件...
  12. xlsxwriter模块安装linux,XlsxWriter模块常用方法
  13. 计算机键盘在线识别,电脑的外接键盘无法识别怎么办?
  14. cmd贪吃蛇(cmd贪吃蛇怎么做)
  15. PowerBI-筛选器函数-LOOKUPVALUE
  16. pentaho java,用于创建Pentaho报告的Java代码,此报告接受输入作为数据集成(.ktr)文件...
  17. 豆瓣新书速递数据爬取与简单数据处理 | 豆瓣爬虫 python pandas
  18. ubuntu/linux系统管理(12)Ubuntu 22.04 安装文件比对工具Meld替代Beyond Compare
  19. 【centos】安装nvida CUDA平台附带安装cudnn库及TensorRT8
  20. 计算机网络自顶向下方法笔记01

热门文章

  1. python中多进程+协程的使用以及为什么要用它
  2. PAT——1022. D进制的A+B
  3. js变量作用域和变量提升
  4. 如何adb shell进入ctia模式
  5. c++对象模型-虚拟析构函数
  6. MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
  7. (chap1 web网络基础) HTTP协议相关的各个协议(1)
  8. C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作
  9. MIMIC 以太坊医疗项目开发(4)Axios
  10. 动态规划(浅层基础)