2019独角兽企业重金招聘Python工程师标准>>>

package common;import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;/*** 数据库连接工厂* @author sally**/
public class ConnectionFactory {
private static Properties prop=new Properties();static{try {prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties"));} catch (IOException e) {e.printStackTrace();System.out.println("在classpath下没有找到jdbc.properties文件");}}/*** 根据数据库的默认连接参数获取数据库的Connection对象* @return 成功,返回Connection对象,否则返回null*/public static Connection getConnection(){Connection conn=null;try {Class.forName(prop.getProperty("driver"));conn=DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("user"), prop.getProperty("password"));} catch (ClassNotFoundException e) {e.printStackTrace();}catch (SQLException e) {e.printStackTrace();}return conn;}
}
package dao;public class DaoException extends RuntimeException {/*** */private static final long serialVersionUID = -4554375587092492837L;public DaoException(){// TODO Auto-generated constructor stub}public DaoException(String arg0) {super(arg0);// TODO Auto-generated constructor stub}public DaoException(Throwable arg0) {super(arg0);// TODO Auto-generated constructor stub}public DaoException(String arg0, Throwable arg1) {super(arg0, arg1);// TODO Auto-generated constructor stub}public DaoException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {super(arg0, arg1, arg2, arg3);// TODO Auto-generated constructor stub}}
package dao;import java.io.IOException;
import java.util.Properties;public class DaoFactory {private static Properties prop=new Properties();static{try {prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("dao.properties"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("在classpath下没有找到Dao工厂的配置文件dao.properties");}}private DaoFactory() {}/*** 从dao.properties获取对象* @param daoName dao的标识名* @return 对应的实现类的实例*/public static Object getInstance(String daoName){Object obj=null;String className=prop.getProperty(daoName);try {obj=Class.forName(className).newInstance();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return obj;}
}
package dao;import java.util.List;import entity.PageModel;
import entity.Product;public interface ProductDao {/** * 新增产品* @param pro 产品实例* @throws DaoException 如果操作失败,会抛出DaoException这个非受检异常* */public void insert(Product pro) throws DaoException;/** 更新产品信息*/public void update(Product pro) throws DaoException;/** 根据ID删除产品*/public void delete(int id) throws DaoException;/** 查询所有产品,以List方式返回* @return 符合条件的产品实例的列表* @throws DaoException 如果操作失败,会抛出DaoException这个非受检的异常* */public List<Product> getProductList() throws DaoException;/** 根据ID查询产品* @param id 产品id* @return 符合条件的产品实例,如果不存在,返回null* @throws DaoException 如果操作失败,会抛出DaoException这个非受检异常* */public Product getProduct(int id) throws DaoException;/** 分页查询数据* @param pageSize是每页显示的记录数* @param pageNo要查询的页号* @return 符合条件的分布数据模型PageModel实例* @throws DaoException* */public PageModel<Product> getProListByPage(int pageNo,int pageSize) throws DaoException;/** 根据姓名模糊查询员工,以分页数据方式返回*/public PageModel<Product> getProListByPage(String name,int pageNo,int pageSize) throws DaoException;}
package entity;import java.io.Serializable;
import java.util.List;public class PageModel<T> implements Serializable{/*** */private static final long serialVersionUID = 8650004680285850659L;private Long recordCount;private List<T> data;public Long getRecordCount() {return recordCount;}public void setRecordCount(Long recordCount) {this.recordCount = recordCount;}public List<T> getData() {return data;}public void setData(List<T> data) {this.data = data;}}
package entity;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;public class Product {private int id;private String name;private double price;private Date date;public Product() {super();}public Product(int id, String name, double price, Date date) {super();this.id = id;this.name = name;this.price = price;this.date = date;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}@Overridepublic String toString() {DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str=this.date==null?"":df.format(date);return "Product [id=" + id + ", name=" + name + ", price=" + price+ ", date=" + str + "]";}}
package impl;import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.DbUtils;
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 common.ConnectionFactory;
import dao.DaoException;
import dao.ProductDao;
import entity.PageModel;
import entity.Product;/*** 产品的Dao操作实现类* @author sally**/public class ProductDaoImpl implements ProductDao {private QueryRunner qr=new QueryRunner();//commons-dbutils包带的:SQL的执行器,线程安全的@Overridepublic void insert(Product pro) throws DaoException {Connection conn=ConnectionFactory.getConnection();String sql="insert into product(name,price,date)values(?,?,now())";Object[] params={pro.getName(),pro.getPrice()};try {qr.update(conn, sql, params);} catch (SQLException e) {throw new DaoException("新增产品时出现异常",e);}finally{DbUtils.closeQuietly(conn);}}@Overridepublic void update(Product pro) throws DaoException {Connection conn=ConnectionFactory.getConnection();String sql="update product set name=?,price=?,date=? where id=?";Object[] params={pro.getName(),pro.getPrice(),pro.getDate(),pro.getId()};try {qr.update(conn, sql, params);} catch (SQLException e) {throw new DaoException("产品更新时出现异常",e);}finally{DbUtils.closeQuietly(conn);}}@Overridepublic void delete(int id) throws DaoException {Connection conn=ConnectionFactory.getConnection();String sql="delete from product where id=?";try {qr.update(conn, sql, id);} catch (SQLException e) {throw new DaoException("产品删除时出现异常",e);}finally{DbUtils.closeQuietly(conn);}}@Overridepublic List<Product> getProductList() throws DaoException {List<Product> list=null;Connection conn=ConnectionFactory.getConnection();String sql="select name,price,date from product";try {list=qr.query(conn, sql, new BeanListHandler<Product>(Product.class));} catch (SQLException e) {throw new DaoException("根据id查找产品时出现异常",e);}finally{DbUtils.closeQuietly(conn);}return list;}@Overridepublic Product getProduct(int id) throws DaoException {Connection conn=ConnectionFactory.getConnection();String sql="select name,price,date from product where id=?";Product pro=null;try {pro=qr.query(conn, sql, new BeanHandler<Product>(Product.class),id);} catch (SQLException e) {throw new DaoException("根据id查找产品时出现异常",e);}finally{DbUtils.closeQuietly(conn);}return pro;}@Overridepublic PageModel<Product> getProListByPage(int pageNo, int pageSize)throws DaoException {PageModel<Product> pm=new PageModel<Product>();Connection conn=ConnectionFactory.getConnection();String sqlCount="select count(id) from product";String sql="select id,name,price,date from product limit ?,?";try {Long count=(Long)qr.query(conn, sqlCount, new ScalarHandler());if(count>0){pm.setRecordCount(count);pm.setData(qr.query(conn, sql, new BeanListHandler<Product>(Product.class),(pageNo-1)*pageSize,pageSize));}} catch (SQLException e) {throw new DaoException("根据id查找产品时出现异常",e);}finally{DbUtils.closeQuietly(conn);}return pm;}@Overridepublic PageModel<Product> getProListByPage(String name, int pageNo,int pageSize) throws DaoException {// TODO Auto-generated method stubreturn null;}}
package testdao;import dao.DaoFactory;
import dao.ProductDao;
import entity.PageModel;
import entity.Product;/*** Product的Dao测试类* @author sally**/
public class ProductDaoTest {public static void main(String[] args) {//testInsert();testGetListByPage();}public static void testInsert(){ProductDao dao=(ProductDao)DaoFactory.getInstance("productDao");Product prod=new Product();prod.setName("电脑");prod.setPrice(8000.00);dao.insert(prod);}public static void testGetListByPage(){ProductDao dao=(ProductDao)DaoFactory.getInstance("productDao");PageModel<Product> pm=dao.getProListByPage(2, 5);System.out.println("总记录数"+pm.getRecordCount());for(Product pro:pm.getData()){System.out.println(pro);}}}
productDao=impl.ProductDaoImpl
#MySQL Connection Parameters
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
user=root
password=root

转载于:https://my.oschina.net/u/2356966/blog/418886

使用commons-dbutils相关推荐

  1. 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)

    转载自原文地址:http://gao-xianglong.iteye.com/blog/2166444 前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的 ...

  2. commons dbutils 的介绍与使用

    1.Commons dbutils是什么? commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List. 2 ...

  3. mysql连接池_数据库技术:数据库连接池,Commons DbUtils,批处理,元数据

    Database Connection Pool Introduction to Database Connection Pool 实际开发中"获得连接"或"释放资源&q ...

  4. Apache Commons DbUtils 入门

    一.概述 DbUtils小巧的Java数据库操作工具,它在JDBC的基础上做了科学的封装,旨在简化JDBC代码混乱与重复. 对于JDBC代码,存在很多问题,算是对Java的批判: 1.操作过程复杂,代 ...

  5. org.apache.commons.dbutils.QueryRunner 执行sqlserver的存储过程

    执行不带输出参数的存储过程与 执行普通update  sql没有什么区别,直接调用即可: 示例代码: public Boolean startResidentialInfoStatistics(Str ...

  6. apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的,QueryRunner查询数据库返回结果错误...

    写了一个最简单的测试,就是使用QueryRunner查询一个表中的所有记录,并保存在JavaBean类对象里. 问题如下:查询到的id全为0,使用普通sql查询是正确的:而且使用QueryRunner ...

  7. java Apache Commons jar包简介

    一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI 说明 ...

  8. 编写更少量的代码:使用apache commons工具类库

    Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCo ...

  9. DbUtils工具类使用

    2019独角兽企业重金招聘Python工程师标准>>> DbUtils工具类使用 创建数据库 CREATE TABLE `student` (`userId` int(11) NOT ...

  10. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

最新文章

  1. resin设置jvm参数
  2. spring boot 所有引用jar包及作用
  3. 微信公众号 Spring Cloud 相关文章链接备份(纯技术)
  4. mac能远程到wjn的linux,linux远程桌面vnc-server安装配置
  5. 电子信息工程跨考计算机武大,往届从材料跨考武大085208电子与通信工程初试303分 - 考研 - 小木虫 - 学术 科研 互动社区...
  6. feign调用多个服务_spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)...
  7. Redis持久化RDB
  8. 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
  9. [瞎搞]JZOJ 3096 Hash函数
  10. Linux load函数,kexec_load()函数 Unix/Linux
  11. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
  12. python矩阵所有元素取整_Python主要逻辑基础与处理
  13. 在阿里云注册域名后怎样进行网站的备案流程
  14. MATLAB中拟合线性方程(最小二乘法)
  15. CF909B Segments
  16. python爬取百度首页源代码并存储到HTML文件里
  17. Autovue v21.0.2的新功能
  18. 如何在Fcpx中卸载安装效果,标题,转场等FCPX模板插件
  19. 解密回声消除技术之二(应用篇)
  20. SpringBoot集成redis的LBS功能

热门文章

  1. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
  2. 深入理解GBDT多分类算法
  3. 程序员加班崩溃,过路外卖小哥主动帮忙改代码,网友直呼太暖了!
  4. 有人从英伟达借了台DGX A100,让神经网络自己造了个GTA5自己玩
  5. 跟随美国博导12年,我学到最深刻的不是科研,而是……
  6. gunicorn源码分析
  7. Django博客系统(写博客页面展示)
  8. MySQL数据库中的事务(四大特性)
  9. spring boot--最基础的hello world
  10. 人工智能及其应用(第5版).蔡自兴-2章课后习题。【参考答案】