- 浏览: 93394 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 183问题: 当在window ... -
java 枚举values()方法
2019-07-30 20:41 428工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1303newHashMapWithExpectedSize 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 375一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 502直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 606经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 502记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 520jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 331为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 318Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 490前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 664习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 598第一部分 实用教程 第 ... -
实现普通用户登录
2017-11-03 11:09 0页面元素: 用户名,密码,验证码,登录 1.创建登录页 ... -
Java容器-- 99集
2017-10-26 14:21 0API接口 Collection Set List H ...
相关推荐
微信视频号大风口项目,多赛道选择,可矩阵,玩法简单轻松上手.mp4
电子科技大学图书馆微信小程序_中国电子科技大学
2023-04-06-项目笔记-第三百七十二阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.370局变量的作用域_370- 2025-01-08
期末课设-Python和Django实现音乐推荐系统(含源码+课设报告+答辩PPT).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载
FlexiFed实验初学者学生复制品_ FlexiFed留级生.zip
sTM32 ADC采集滤波算法,卡尔曼 中位值 同步对比输出源程序,芯片采用STM32f103c8t6.算法采用卡尔曼滤波算法中位值滤波算法, 波形输出正常采集的卡尔曼 中位值三个波形输出,程序注释详细。
详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/145019667
三相两电平逆变器模型预测控制(MPC)simulink仿真,内有坐标变和MPC代码,可修改电流参考值,~~可用作电力电子方向入门学习
25混合A星算法路径规划Hybrid-Astar 以车辆的运动学模型为节点,以当前点到终点的Astar距离和RS距离两者最大的距离作为H(n)函数的估计代价,使用matlab实现(2016a以上版本)
考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 关键词:碳交易 电制氢 阶梯式碳交易 综合能源系统 热电优化 参考文档:《考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化》基本复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个考虑阶梯式碳交易机制的电热综合能源系统优化调度研究,考虑综合能源系统参与碳交易市场,引入引入阶梯式碳交易机制引导IES控制碳排放,接着细化电转气(P2G)的两阶段运行过程,引入电解槽、甲烷反应器、氢燃料电池(HFC)替传统的P2G,研究氢能的多方面效益;最后提出热电比可调的热电联产、HFC运行策略,进一步提高IES的低碳性与经济性。 目标函数为以购能成本、碳排放成本、弃风成本最小,将原问题转化为混合整数线性问题,运用CPLEX商业求解器进行求解。
并离网逆变器仿真模型 逆变器PQ控制,Vf控制,无功能量发生器SVG,有源电力滤波器APF仿真模型
springboot176基于Spring Boot的装饰工程管理系统,含有完整的源码和报告文档
一、项目简介 本项目是一套基于SSM框架实现的生活缴费系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.5及以上 后端:spring+springmvc+mybatis+maven+mysql 前端:vue,css,js 三、系统功能 系统角色主要包括:管理员、用户 系统主要功能包括: 用户登录 用户注册 首页 个人中心 修改密码 个人信息 用户管理 电表管理 电表缴费管理:查看缴费详情,缴费 ETC管理 ETC缴费管理 供暖管理 供暖缴费管理 固话管理 固话缴费管理 宽带管理 宽带缴费管理 燃气表管理 燃气表缴费管理 油卡管理 油卡缴费管理 水表管理 水表缴费管理 帮助中心类型管理 油卡所属公司管理 客服管理 轮播图管理等功能
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
多智能体、一致性、时滞 含通信时滞和输入时滞的多智能体一致性仿真 简单的多智能体一致性性仿真图,包含状态轨迹图和控制输入图。 适用于初学者。
内容概要:本文介绍了一种新的智能对比度增强技术——动态直方图均衡化(DHE)。该方法通过对输入图像的直方图进行分割并分别进行直方图均衡化来克服传统全局直方图均衡化(GHE)和其他方法存在的局限性,从而实现更好的图像细节保护及显著的整体对比度增强效果。具体来说,DHE基于局部极小值将图像直方图划分为子直方图,并重新调整各分区以避免高灰度频率部分对低频区域的影响。同时,在进行均衡时限制每种子直方图的灰度级范围,防止过度拉伸导致细节丢失等问题。 适用人群:从事计算机视觉和图像处理研究的专业人员,特别是关注对比度增强算法及其实际应用的研究学者和技术开发者。 使用场景及目标:可用于医疗影像处理、指纹识别等多个领域的前期预处理步骤;主要目的是改善低对比度图像的质量,提升后续图像识别或其他处理任务的效果。 其他说明:相比于现有技术如全球均值变换、局部直方图均衡以及特定直方图规格化等方式,本提出的DHE能有效避免因增强处理而引起的严重副作用如棋盘效应等,提供更加平滑自然的视觉体验。此外文中还展示了多个实验结果以验证新方法的有效性和优越性能表现。
我的超迷你机械臂机器人项目。_Dummy-Robot
实体单元椭圆主体扭转分析,着重分析扭矩的施加方式
OKR计划表 自我管理
用于微信小程序的ProtoBuffer库