`
itace
  • 浏览: 184760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JDBC DAO

阅读更多
public class MysqlDAO {
	
	public Connection getConnection() throws SQLException {
		try {
			Class.forName(PropertiesUtil.getString("jdbc.driver"));
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		String url = PropertiesUtil.getString("jdbc.url");
		String user = PropertiesUtil.getString("jdbc.user");
		String password = PropertiesUtil.getString("jdbc.password");
		Connection conn = (Connection) DriverManager.getConnection(url,user,password);
		return conn;
//		return getPoolConnection();
	}
	/**
	 * 注:Oracle键必须是大写的
	 * @param sql
	 * @param params
	 * @return
	 * @throws SQLException
	 */
	public List<Map<String, Object>> query(String sql, Object[] params) throws SQLException {
		Connection connection = getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		if (params != null) {
			for (int i = 0; i < params.length; i++) {
				ps.setObject((i + 1), params[i]);
			}
		}
		ResultSet rs = ps.executeQuery();
		ResultSetMetaData rsmd = rs.getMetaData();
		int column_count = rsmd.getColumnCount();
		List<String> fields = new ArrayList<String>();
		for (int i = 1; i <= column_count; i++) {
			String field = rsmd.getColumnName(i);
			fields.add(field);
		}
		List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
		while (rs.next()) {
			Map<String, Object> record = new HashMap<String, Object>();
			for (String field : fields) {
				Object value = rs.getObject(field);
				record.put(field, value);
			}
			result.add(record);
		}
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}

		return result;
	}
	/**
	 * 
	 * @param sql
	 * @param params
	 * @param alias 总数别名
	 * @return
	 * @throws Exception
	 */
	public int queryCount(String sql, Object[] params,String alias) throws Exception {
		Connection connection = getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		if (params != null) {
			for (int i = 0; i < params.length; i++) {
				ps.setObject((i + 1), params[i]);
			}
		}
		ResultSet rs = ps.executeQuery();
		int count = 0;
		if (rs.next()) {
			count = rs.getInt(alias);
		}
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}
		return count;
	}

	public int update(String sql, Object[] params) throws SQLException {
		Connection connection = getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		if (params != null) {
			for (int i = 0; i < params.length; i++) {
				ps.setObject((i + 1), params[i]);
			}
		}
		int count = ps.executeUpdate();
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}
		return count;
	}

	public void batchUpdate(String sql, List<Object[]> list) throws SQLException {
		Connection connection = getConnection();
		connection.setAutoCommit(false);
		PreparedStatement ps = connection.prepareStatement(sql);

		for (Object[] param : list) {
			for (int i = 0; i < param.length; i++) {
				ps.setObject((i + 1), param[i]);
			}
			ps.addBatch();
		}
		int[] counts = ps.executeBatch();
		connection.setAutoCommit(true);
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}
	}
	/**
	 * 查询mysql中的所有表
	 * @return
	 * @throws SQLException
	 */
	public List<String> queryTables() throws SQLException{
		String sql = "show tables";// oracle:select table_name from user_tables;
		Connection connection = getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		List<String> result = new ArrayList<String>();
		while (rs.next()) {
			String table_name = rs.getString("Tables_in_house");
			result.add(table_name);
		}
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}
		return result;
	}
	/**
	 * 查询mysql中的表的所有列名及其类型
	 * @return
	 * @throws SQLException
	 */
	public Map<String, String> queryTableColumn(String table) throws SQLException{
		String sql = " select * from "+table+" where 1=2 ";
		Connection connection = getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		ResultSetMetaData rsmd = rs.getMetaData();
		int column_count = rsmd.getColumnCount();
//		List<String> fields = new ArrayList<String>();
		Map<String, String> fields = new HashMap<String, String>();
		for (int i = 1; i <= column_count; i++) {
			String field = rsmd.getColumnName(i);
			String type = rsmd.getColumnTypeName(i);
			fields.put(field, type);
//			System.out.println(field+"-"+type);
		}
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(connection!=null){
			connection.close();
		}
		return fields;
	}

 

分享到:
评论

相关推荐

    JDBC+DAO.rar_DAO JDBC_java d_jdbc d_jdbc dao_留言系统

    标题"JDBC+DAO.rar_DAO JDBC_java d_jdbc d_jdbc dao_留言系统"中,关键词主要包括"JDBC"、"DAO"和"留言系统",这表明这是一个基于Java的数据库操作(JDBC)和数据访问对象(DAO)模式实现的简单留言系统。...

    JDBC_DAO.rar

    "JDBC_DAO.rar"这个压缩包文件显然包含了关于使用Java数据库连接(JDBC)实现数据访问对象(DAO)分层模型的相关资源。这是一个常见的设计模式,用于将业务逻辑与数据操作进行解耦,提高代码的可重用性和可维护性。 ...

    jdbcdao.zip

    在这个名为"jdbcdao.zip"的压缩包中,我们看到的是一个基于JDBC实现的简单管理系统,该系统包括管理员、教师、学生和课程四个主要模块,它巧妙地运用了DAO(Data Access Object)设计模式,为新手提供了一个学习和...

    Common JDBC DAO组件系统库及帮助手册

    CommonJDBCDAO组件则是由国人自主开发实现的基于JDBC API的数据访问组件,保留有O/R Mapping工具的简便性,也具有JDBCTemplate的灵活性,对JDBC API进行彻底的封装和简化,而且使用简单,目前的版本完全兼容于Oracle...

    JDBC_DAO设计思想与搭建骨架, 结合Service层讲解DAO层的异常处理

    **JDBC DAO设计思想与搭建骨架** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的标准API,而DAO(Data Access Object)模式是一种常用的设计模式,用于封装对数据库的操作,以降低业务逻辑与数据...

    JDBC DAO代碼自码动生成工具

    此小工具能更据mysql数据库中的表结构,自动生成JDBC DAO类和接口,包括单表操作的CRUD方法,其中包含分页方法。此工具用swing做的界面,使用简单方便。需要源码,请发邮件至763863446@qq.com。

    java jdbc dao

    ### Java JDBC DAO 概述 在Java开发领域中,DAO(Data Access Object)设计模式是一种常用的模式,用于封装对数据库的访问操作。本篇文章将基于提供的`BaseDao`类,深入探讨Java JDBC DAO的设计思想、实现原理以及...

    jdbcdao.zip_jdbc ttemplate_loose9l6_oracle_python_rockfps

    标题中的"jdbcdao.zip_jdbc ttemplate_loose9l6_oracle_python_rockfps"暗示了一个基于Python的数据库访问模块,它集成了JDBC(Java Database Connectivity)模板风格的查询功能,适用于SQLite、MySQL和Oracle数据库...

    JDBC DAO模式 (复习)

    DAO JDBC 模式

    spring-jdbc-dao

    《Spring JDBC DAO详解》 在Java开发中,Spring框架以其强大的功能和易用性深受开发者喜爱,其中Spring JDBC模块提供了对数据库操作的支持。Spring JDBC DAO(Data Access Object)模式是Spring提供的一种数据库...

    jdbc+dao:连接oracle

    在JDBC+DAO模式中,DAO类封装了对数据库的所有操作,使业务逻辑代码与数据访问代码分离,提高了代码的可维护性和可测试性。 连接Oracle数据库的基本步骤如下: 1. **加载驱动**:使用`Class.forName()`方法加载...

    JDBC中的 DAO

    **JDBC中的DAO模式** DAO(Data Access Object)模式是一种常用的设计模式,它在Java编程中用于处理数据库交互。DAO的主要目标是将业务逻辑与数据访问层进行解耦,提高代码的可重用性和可测试性。在JDBC中,DAO模式...

    基于JSP+Servlet+JavaBean+JDBC+DAO的Web图书管理架构设计该系统

    基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...

    jdbc dao模式的逻辑图

    dao模式的详细图解

    Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之09.JDBC DAO设计模式.docx

    - **可扩展性**:更换不同的数据访问技术(如JDBC、Hibernate或MyBatis)只需更改DAO实现,而无需修改上层业务代码。 在用户登录和注册场景下,DAO模式的应用如下: - **登录**:`UserDao.login()`方法接收用户名...

    CRUD-jdbcDao

    在"CRUD-jdbcDao"项目中,我们可能看到了一个名为`jdbcDao`的组件,这是Java中的数据访问对象(DAO,Data Access Object)模式的实现,用于封装数据库操作,使其与业务逻辑解耦。DAO模式的主要目的是将业务逻辑和...

    ifunsu封装基于springjdbc的dao层api

    标题"ifunsu封装基于springjdbc的dao层api"指的是一个特定的项目或库,名为ifunsu,它已经对Spring JDBC进行了封装,以创建更易用的数据访问对象(DAO)层API。DAO层是应用程序中负责与数据库进行交互的部分,通常...

    JDBC相关单元测试及通用的Dao

    jdbc详细测试用例,包括connection ,statement,preparedstatement,resultset,BeanUtils,DBUtils,数据库连接池dbcp,cp03的单元测试,及dao层的统一封装,适合项目开发人员学习和项目中使用。

    JDBC+DAO实现简单部门管理

    JDBC+DAO实现简单部门管理 本文主要介绍了使用JDBC和DAO模式实现简单的部门管理系统,实现了基本的CRUD(Create, Read, Update, Delete)操作。同时也涉及到了JavaWeb中的过滤监听机制,包括Filter和Listener的概念...

    基于JDBC实现的DAO

    基于JDBC实现的DAO(Data Access Object)是一种在Java编程中常见的数据访问模式,它用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦,提高了代码的可复用性和可维护性。以下是关于基于JDBC实现DAO的一些...

Global site tag (gtag.js) - Google Analytics