修改项目2连接数据库步骤:1、导入相关jar包和配置文件mysql-connection.jardruid.jar+配置文件[注意修改配置文件 账号密码 连接的数据库名]dbutils.jar  2、创建数据库表- 开发中一般一个项目对应一个数据库- 创建用户表: customerCREATE TABLE customer(id INT(11) PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(100) ,gender CHAR(2),age INT(3),tel VARCHAR(13),email VARCHAR(100));3、修改实体类Customer和表对应- 类中多添加了一个属性 id  - 为id属性提供get/set方法,  提供带id属性的构造器4、JDBCUtils5、BaseDao6、CustomerDao- 对customer表进行操作的dao- 按界面的操作编写方法1、添加用户到数据库的方法:int saveCustomer(Customer customer);2、修改时需要先根据id查询要修改的用户对象方法: Customer getCutomserById(String id);3、修改用户的方法: int updateCustomerById(Customer old);//通过old 携带id,根据id修改对应的用户的其他值-注: id 比较重要, 根据id可以确定表中的唯一条记录4、删除指定id用户的方法: int deleteById(String id);
package com.atguigu.dao;
/*** 数据库操作的基类方法*    提供基本的增删改查方法* @author Administrator**/import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;import com.atguigu.util.JDBCUtils;public class BaseDao {private QueryRunner runner = new QueryRunner();/*** 查询一条记录封装为一个对象的方法*/public <T>T getBean(Class<T> type,String sql , Object...params) {Connection conn = JDBCUtils.getConnection();//参数1:数据库连接, 参数2:要执行的sql语句 , 参数4:sql语句执行占位符对应的参数 , 参数3:工具类对象,将查询到的数据封装位T的实例T t = null;try {t = runner.query(conn, sql, new BeanHandler<>(type), params);} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.closeConnection(conn);}return t;}/*** 查询多条记录封装位对象集合的方法*/public <T>List<T> getBeanList(Class<T> type,String sql , Object...params){List<T> list = null;Connection conn = JDBCUtils.getConnection();try {list = runner.query(conn,sql, new BeanListHandler<>(type), params);} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.closeConnection(conn);}return list;}/*** 增删改*/public int  update(String sql , Object...params) {int i = 0;Connection conn = JDBCUtils.getConnection();try {i = runner.update(conn, sql, params);} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.closeConnection(conn);}return i;}/*** 查询第一行第一列数据的方法*/public Object getScalar(String sql , Object...params) {Object obj = null;Connection conn = JDBCUtils.getConnection();try {obj = runner.query(conn, sql, new ScalarHandler(), params);} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.closeConnection(conn);}return obj;}/*** 批量增删改的方法*/public void batchUpdate(String sql , Object[][]params) {Connection conn = JDBCUtils.getConnection();try {runner.batch(conn, sql, params);} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.closeConnection(conn);}}}

BaseDao.java相关推荐

  1. sh(Spring+Spring mvc+hibernate)——BaseDao.java

    /** * @Title: BaseDao.java * @Package org.dao * @Description: TODO该方法的主要作用: * @author A18ccms A18ccm ...

  2. 使用Servlet上传多张图片——Dao层(BaseDao.java)

    package orz.treeSquirrels.dao;import java.sql.Connection; import java.sql.DriverManager; import java ...

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

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

  4. Java入门基础:Java JDBC封装简单的访问MySQL数据库类(BaseDao)

    1.JDBC封装访问数据库的基类,目的是重用数据库访问代码 封装以下方法: MySQL数据库的连接 数据库关闭 开启数据库事务 提交数据库事务 事务回滚 注意没有封装存储过程的调用 /** * < ...

  5. java basedao 封装,GreenDao的实用封装

    前面简单介绍了下GreenDao的使用,从前面的介绍看来是不是觉得有点 so easy.对就是这么简单.曾经有位大神说作为一位合格的程序员就要在学习别人的东西时,有点自己的想法.为了表示我是位比较合格 ...

  6. Java基础篇:JDBC核心技术

    文章目录 第1章:JDBC概述 1.1 数据的持久化 1.2 JDBC介绍 1.3 JDBC程序编写步骤 第2章:获取数据库连接 2.1 要素一:Driver接口实现类 2.1.1 Driver接口介 ...

  7. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

    类的继承 Java只支持单继承,不允许多重继承 - 一个子类只能有一个父类 - 一个父类可以派生出多个子类 这里写图片描述 子类继承了父类,就继承了父类的方法和属性. 在子类中,可以使用父类中定义的方 ...

  8. 购物车的实现(jsp的session+Java的Map的结合)

    1:电商如此发达的现在,作为一个web开发程序猿,如果不会写购物车,真是有点不好意思找工作.所以抓紧练习啊,从上篇博客中抽离出如何实现购物车的功能. 2:首先需要理解购物车实现的一些基本步骤. 2.1 ...

  9. java 注解生成实例_Java 8 开发的 Mybatis 注解代码生成工具

    MybatisAnnotationTools MybatisAnnotationTools 是基于 Java8 开发的一款可以用于自动化生成 MyBatis 注解类的工具,支持配置数据源.类路径,表名 ...

最新文章

  1. 本科生连发数篇SCI,你的第一篇SCI发表了吗?
  2. 深入理解JVM(5) : Java垃圾收集器
  3. Web云笔记--CSS
  4. 前端学习(2334):angular之内置属性指令ngclass
  5. 高通量数据中批次效应的鉴定和处理(三)- 如何设计尽量避免批次影响
  6. 如何解决Xshell使用时中文字体是躺倒显示的问题
  7. 浅谈GIS中几种常用的坐标系统与投影系统
  8. python 搭建web_理解python web开发,轻松搭建web app!
  9. 天涯明月刀服务器维护事假,《天涯明月刀ol》12月16日服务器维护公告
  10. 为什么要用 Lightly 在线 IDE?
  11. android 旋转木马菜单,AndroidCarrouselLayout
  12. 增加收入的销售 OKR 案例 – 用这些 OKR 范例来设定你的销售团队目标
  13. MacBook邮件登陆163邮箱,解决无法验证账户名或密码的问题
  14. Choerodon猪齿鱼实践之Webhook配置
  15. 当AI学会共情,港科大新研究赋予Chatbot同理心 | 一周AI最火论文
  16. tplink路由器设置网址方法
  17. 想做一个SSL代理的集群中,有很多问题需要解决,I am all grateful to you for your advice
  18. PS如何查看所选图层的实际像素?
  19. [bzoj1233]干草堆tower
  20. [UTCTF2020]sstv

热门文章

  1. 摊上事儿的网易邮箱和安全圈的那些“防御机制”
  2. MySQL:账户管理
  3. 六大云端 Jupyter Notebook 平台测评
  4. C++设计模式之单例工厂模式
  5. 2019徐州网络赛G
  6. 程序猿解决BUG之总结
  7. Android 多语言国家代码清单及values命名
  8. php教程数据库,php数据库基础
  9. == 与 === 的区别
  10. SQL 02 基础查询与排序