- 浏览: 91472 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
利用jdbc 实现的数据库操作方法
/* * 创建日期 2011-1-17 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ package com.hello.aess.vo; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; import javax.sql.DataSource; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import com.hehe.aess.logic.log.LogManager; import com.hehe.aess.logic.sysutil.ManagerFactory; public abstract class BaseDAO{ private static final LogManager logManager = ManagerFactory.getLogManager(); private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } private SimpleJdbcTemplate getSimpleJdbcTemplate() { return new SimpleJdbcTemplate(dataSource); } private JdbcTemplate getJdbcTemplate() { return new JdbcTemplate(dataSource); } /** * 获取BeanPropertyRowMapper,主要目的是允许将数据库中NULL值转化为Java中基本类型的默认值 * @param <T> * @param mappedClass * @return */ protected <T>BeanPropertyRowMapper<T> getBeanPropertyRowMapper(Class<T> mappedClass) { BeanPropertyRowMapper<T> bprm = new BeanPropertyRowMapper<T>(mappedClass); bprm.setPrimitivesDefaultedForNullValue(true); return bprm; } /** *使用JdbcTemplate实现的基础查询类,带有参数数组 */ protected <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) { logManager.info(this.getClass(), sql + toString(args)); return getJdbcTemplate().query(sql,args,rowMapper); } protected int queryForCount(String sql){ logManager.info(this.getClass(), sql); return getJdbcTemplate().queryForInt(sql); } protected int queryForCount(String sql,Object[] args){ logManager.info(this.getClass(), sql + toString(args)); return getJdbcTemplate().queryForInt(sql, args); } protected int update(String sql, Object[] args, int[] types){ logManager.info(this.getClass(), sql + toString(args)); return getJdbcTemplate().update(sql, args, types); } protected int update(String sql,SqlParameterSource ps){ logManager.info(this.getClass(), sql); return getSimpleJdbcTemplate().update(sql, ps); } protected int[] batchUpdate(String sql,SqlParameterSource[] ps){ logManager.info(this.getClass(), sql); return getSimpleJdbcTemplate().batchUpdate(sql,ps); } protected int[] batchUpdate(String sql, BatchPreparedStatementSetter setter) { logManager.info(this.getClass(), sql); return getJdbcTemplate().batchUpdate(sql, setter); } /** *使用JdbcTemplate实现的基础查询类 */ protected <T> List<T> query(String sql,RowMapper<T> rowMapper) { logManager.info(this.getClass(), sql); return getJdbcTemplate().query(sql,rowMapper); } protected <T>List<T> pageQuery(String baseSql,RowMapper<T> rm,int begin,int length) { String sql="select * from (select rownum as my_rownum,table_a.* from("+baseSql+") table_a where rownum<?) where my_rownum>=?"; Object[] args=new Object[2]; args[0] = new Integer(begin+length); args[1] = new Integer(begin); logManager.info(this.getClass(), sql + toString(args)); return query(sql,args,rm); } protected <T>List<T> pageQuery(String baseSql,Object[] paras,RowMapper<T> rm,int begin,int length) { String sql="select * from (select rownum as my_rownum,table_a.* from("+baseSql+") table_a where rownum<?) where my_rownum>=?"; Object[] args=null; int i=0; if(paras!=null){ args = new Object[paras.length+2]; for(i=0;i<paras.length;i++) args[i]=paras[i]; } else args = new Object[2]; args[i++] = new Integer(begin+length); args[i++] = new Integer(begin); logManager.info(this.getClass(), sql + toString(args)); return query(sql,args,rm); } protected List<Map<String, Object>> queryForList(String sql){ logManager.info(this.getClass(), sql); List<Map<String, Object>> objList = this.getJdbcTemplate().queryForList(sql); return objList; } protected List<Map<String, Object>> queryForList(String sql,Object[] args){ logManager.info(this.getClass(), sql + toString(args)); List<Map<String, Object>> objList = this.getJdbcTemplate().queryForList(sql, args); return objList; } protected List<Map<String, Object>> pageQuery(String baseSql,Object[] params,int begin,int length){ String sql = "select * from (select rownum as my_rownum,table_a.* from("+ baseSql+ ") table_a where rownum<?) where my_rownum>=?" ; Object[] args=new Object[params.length+2]; int i=0; if(params!=null){ args = new Object[params.length+2]; for(i=0;i<params.length;i++) args[i]=params[i]; } args[i++] = new Integer(begin+length); args[i++] = new Integer(begin); logManager.info(this.getClass(), sql + toString(args)); return this.queryForList(sql,args); } /** * 功能:取得特定订单号 * 输入:sequenceName 数据库表对应的sequence的名字 * 输出:订单号 * 说明:订单号生成规则:时间(如20060412152403)+四位流水号 * 时间以数据库时间为准,如果以应用服务器时间为准,如果服务器时间不一致,可造成订单号重复 * 现在的实现很弱智,需要改进 */ public final String getNextId(String sequenceName) { StringBuffer buf = new StringBuffer(); buf.append("select to_char(sysdate,'yyyymmddhh24MISS')||"); buf.append(sequenceName); buf.append(".nextval as id from dual"); try { String id = (String) getJdbcTemplate().query(buf.toString(), new ResultSetExtractor<String>() { public String extractData(ResultSet rs) { String str=null; try { if (rs.next()) { str=rs.getString("id"); } } catch (SQLException e) { e.printStackTrace(); } return str; } }); return id; }catch(Exception e){ e.printStackTrace(); return null; } } /**获得参数列表的字符串*/ private String toString(Object[] params){ if(params==null) return "{[]}"; StringBuffer buff = new StringBuffer(); buff.append("{"); for (int i=0;i<params.length;i++){ Object obj = params[i]; if(obj!=null) buff.append("["+getString(obj)+"]"); if(i!=params.length-1)buff.append(","); } buff.append("}"); return buff.toString(); } /**将对象转换为字符串*/ private String getString(Object obj){ if(obj==null) return "null"; else if(obj instanceof Date){ Date date = (Date)obj; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss",Locale.SIMPLIFIED_CHINESE); return sdf.format(date); } else if(obj instanceof String){ String str = (String)obj; return str; } return obj.toString(); } }
发表评论
-
linux 文件 dos unix格式,unix和dos下文本文件得区别
2023-09-06 23:23 153问题: 当在window ... -
java 枚举values()方法
2019-07-30 20:41 415工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1280newHashMapWithExpectedSize VS ... -
java 8 stream应用
2019-07-15 11:43 01.生成map List<BusinessFacili ... -
技术知识点汇总
2019-02-12 15:47 01. LTS(light-task-scheduler) ... -
架构演进
2018-12-21 00:54 369一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 490直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 600经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 493记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 511jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 321为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 310Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 484前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 658习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 592第一部分 实用教程 第 ... -
实现普通用户登录
2017-11-03 11:09 0页面元素: 用户名,密码,验证码,登录 1.创建登录页 ... -
Java容器-- 99集
2017-10-26 14:21 0API接口 Collection Set List H ...
相关推荐
"基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...
"常用的BaseDAO及其实现" BaseDAO是Java中一种常用的数据访问对象(DAO),它提供了统一的数据访问接口,封装了数据访问的基本操作。BaseDAO通常是通过继承HibernateDaoSupport类实现的。 BaseDAO的主要功能包括:...
在Java开发中,BaseDao和BaseService是常见的设计模式,用于实现数据访问层(DAO)和业务逻辑层(Service)的抽象基类。通过结合泛型,我们可以创建更通用、灵活的代码,减少冗余并提高代码质量。 首先,我们来理解...
**基于Hibernate的BaseDAO** 在Java企业级开发中,数据访问层(DAO,Data Access Object)是连接业务逻辑层和数据库的重要桥梁。BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层...
`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象(Data Access Object)的基础类,用于封装对数据库的通用操作。现在我们来深入探讨`hibernate`中的`BaseDAO`及其相关知识点。 首先,DAO设计模式是...
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而BaseDao是常用于数据访问层的一个基类设计。本话题主要围绕如何利用SSH框架结合BaseDao实现分页功能来展开。 首先,让我们了解...
本篇将重点讲解Spring的声明式事务管理和BaseDao的设计与实现。 一、Spring声明式事务管理 1. **什么是事务**:事务是数据库操作的基本单元,它保证了数据的一致性和完整性。一个事务中的所有操作要么全部成功,...
"SpringBoot_BaseDao.zip"这个压缩包文件显然与SpringBoot相关的数据库操作有关,特别是关于BaseDao的基础使用和实现。在Java开发中,Dao(Data Access Object)层是负责处理数据访问的,通常用于与数据库进行交互。...
### 基于Spring JDBC的BaseDAO实现与应用 #### 概述 在Java开发领域,尤其是企业级应用开发中,持久层框架是至关重要的组件之一。Spring框架提供了多种方式来处理数据库操作,其中Spring JDBC模块是轻量级且功能...
在标题提到的"SSH集成查询分页处理BaseDao"中,我们主要关注的是如何在SSH框架下实现数据的分页查询。 分页是大型Web应用中必不可少的功能,它能够帮助用户更有效地浏览和管理大量数据。在这个场景中,"BaseDao...
在Java开发中,BaseDao(基础数据访问对象)是一个常见的设计模式,用于提供数据库操作的通用接口或基类。这个模式的主要目标是提高代码的复用性和可维护性,通过抽象出基本的CRUD(创建、读取、更新、删除)操作,...
在Java编程语言中,`BaseDao.java` 和 `DaoUtil.java` 文件通常包含了与数据库交互的核心逻辑,特别是针对关系型数据库如MySQL。这两个文件中的类和方法是基于JDBC(Java Database Connectivity)API实现的,这是一...
`BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...
在Java开发中,`BaseDao` 是一个常见的设计模式,用于提供数据访问对象(DAO)的基础功能,方便其他业务逻辑层或数据访问层组件进行数据库操作。本篇将深入探讨如何利用注解和反射机制来封装一个支持一对多查询的 `...
3. **BaseDao封装**:BaseDao是一般用于数据访问层的基类,它包含了通用的CRUD操作。在这个项目中,BaseDao可能已经定义了如`save()`, `update()`, `delete()`, `findById()`, `findAll()`等方法,以供其他特定的DAO...
`BaseDao`是常见的一种设计模式,用于封装Hibernate的基本数据库操作,它为业务层提供了一种统一的接口,方便进行CRUD(创建、读取、更新、删除)操作。在这个主题中,我们将深入探讨`BaseDao`的设计与实现,以及...
### JDBC与BaseDao通用类 #### JDBC(Java Database Connectivity) JDBC是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC定义了一系列的API,...
MyBatis BaseDAO 是一种基于 MyBatis 框架的工具类库,它旨在简化数据库操作,通过封装常见的CRUD(Create、Read、Update、Delete)方法,为开发者提供便利,减少重复代码,提高开发效率。在Java Web 开发中,...
本项目涉及到的主题是“SpringBoot+MyBatis实现多数据源以及基于BaseDAO的分页功能”。 多数据源是指在一个应用中同时管理多个数据库。这在分布式系统或者需要隔离不同业务数据的场景中非常常见。SpringBoot可以...