java sqlhelper_SQLHelper 代码细节
SQLHelper 具有如下功能:
用于获取 sql.properties 配置文件中定义的 SQL 语句(模板)。
生成基于单表的 SQL 语句。
以下是代码细节:
public class SQLHelper {
private static final Properties sqlProperties = FileUtil.loadPropertiesFile("sql.properties");
public static String getSQL(String key) {
String value = "";
if (sqlProperties.containsKey(key)) {
value = sqlProperties.getProperty(key);
} else {
System.err.println("Can not get property [" + key + "] in sql.properties file.");
}
return value;
}
public static String generateSelectSQL(Class> cls, String condition, Object... params) {
StringBuilder sql = new StringBuilder("select * from ");
String tableName = getTableName(cls);
if (StringUtil.isNotEmpty(tableName)) {
sql.append(tableName).append(" ");
}
if (StringUtil.isNotEmpty(condition)) {
if (ArrayUtil.isNotEmpty(params)) {
condition = getWhereCondition(condition, params);
}
sql.append("where ").append(condition);
}
return sql.toString();
}
public static String generateInsertSQL(Class> cls, Map fieldMap) {
StringBuilder sql = new StringBuilder("insert into ");
String tableName = getTableName(cls);
if (StringUtil.isNotEmpty(tableName)) {
sql.append(tableName).append(" ");
}
if (MapUtil.isNotEmpty(fieldMap)) {
int i = 0;
StringBuilder columns = new StringBuilder();
StringBuilder values = new StringBuilder(" values ");
for (Map.Entry fieldEntry : fieldMap.entrySet()) {
String columnName = StringUtil.toUnderline(fieldEntry.getKey());
Object columnValue = fieldEntry.getValue();
if (i == 0) {
columns.append("(").append(columnName);
values.append("('").append(columnValue).append("'");
} else if (i == fieldMap.size() - 1) {
columns.append(", ").append(columnName).append(")");
values.append(", '").append(columnValue).append("')");
} else {
columns.append(", ").append(columnName);
values.append(", '").append(columnValue).append("'");
}
i++;
}
sql.append(columns).append(values);
}
return sql.toString();
}
public static String generateDeleteSQL(Class> cls, String condition, Object... params) {
StringBuilder sql = new StringBuilder("delete from ");
String tableName = getTableName(cls);
if (StringUtil.isNotEmpty(tableName)) {
sql.append(tableName).append(" ");
}
if (StringUtil.isNotEmpty(condition)) {
if (ArrayUtil.isNotEmpty(params)) {
condition = getWhereCondition(condition, params);
}
sql.append(" where ").append(condition);
}
return sql.toString();
}
public static String generateUpdateSQL(Class> cls, Map fieldMap, String condition, Object... params) {
StringBuilder sql = new StringBuilder("update ");
String tableName = getTableName(cls);
if (StringUtil.isNotEmpty(tableName)) {
sql.append(tableName).append(" ");
}
if (MapUtil.isNotEmpty(fieldMap)) {
sql.append("set ");
int i = 0;
for (Map.Entry fieldEntry : fieldMap.entrySet()) {
String columnName = StringUtil.toUnderline(fieldEntry.getKey());
Object columnValue = fieldEntry.getValue();
if (i == 0) {
sql.append(columnName).append(" = '").append(columnValue).append("'");
} else {
sql.append(", ").append(columnName).append(" = '").append(columnValue).append("'");
}
i++;
}
}
if (StringUtil.isNotEmpty(condition)) {
if (ArrayUtil.isNotEmpty(params)) {
condition = getWhereCondition(condition, params);
}
sql.append(" where ").append(condition);
}
return sql.toString();
}
private static String getTableName(Class> cls) {
String tableName;
if (cls.isAnnotationPresent(Table.class)) {
tableName = cls.getAnnotation(Table.class).value();
} else {
tableName = cls.getSimpleName().toLowerCase();
}
return tableName;
}
private static String getWhereCondition(String condition, Object... params) {
StringBuffer buffer = new StringBuffer();
Matcher matcher = Pattern.compile("\\?").matcher(condition);
for (int i = 0; matcher.find(); i++) {
matcher.appendReplacement(buffer, "'" + params[i].toString() + "'");
}
matcher.appendTail(buffer);
return buffer.toString();
}
}
java sqlhelper_SQLHelper 代码细节相关推荐
- java游戏代码_Java与Kotlin系列文章之性能问题详解
作者丨Jakub Anioła 译者丨姜雨生 策划丨田晓旭 随着对 Kotlin 越来越深入的了解,我发现市面上关于 Kotlin 方面,比较深入的资料几乎是 0,所以我决定,将 Kotlin 各个方 ...
- java重复代码重构_重构重复代码
java重复代码重构 As a software engineer working on a large project, you'll likely be asked to do cleanup w ...
- 策略模式及简单Java案例代码实现
说明:本文是<大话设计模式>的学习记录及结合网上相关信息编写,原书代码例子采用C#编写,本文采用Java稍加改写.如有不当,欢迎指正,共同进步. 1.策略模式概述: 策略模式(P ...
- 从JoinBatchGroup 代码细节 来看Rocksdb的相比于leveldb的写入优势
文章目录 1. Rocksdb写入模型 2. LevelDB写入的优化点 3. Rocksdb 的优化 1. Busy Loop 2. Short Wait -- SOMETIMES busy Loo ...
- java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始
java编写代码用什么 by John Selawsky 约翰·塞劳斯基(John Selawsky) 如何学习用Java编写代码:为什么要学习以及从哪里开始 (How to learn to cod ...
- Java 常用代码汇总
欢迎关注方志朋的博客,回复"666"获面试宝典 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric ...
- 陌陌安全开源了 Java 静态代码安全审计插件
近日,陌陌安全开源了 Java 静态代码安全审计插件 MOMO Code Sec Inspector,侧重于在编码过程中发现项目潜在的安全风险,并提供一键修复能力. MOMO 安全团队认为,绝大部分 ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- 求一个简单的java线程代码,Java线程代码的实现方法
1.继承Thread 声明Thread的子类 运行thread子类的方法 2.创建Thread的匿名子类 3.实现Runnable接口 声明 运行 4.创建实现Runnable接口的匿名类 5.线程名 ...
- 你了解欧拉回路吗?(附Java实现代码)
文章目录 一:什么是欧拉回路? 二: 无向图中欧拉回路存在的条件 三:如何得到欧拉回路 四:Java实现 一:什么是欧拉回路? 不知道你有没有玩过这样一种叫"一笔画",从某一点开始 ...
最新文章
- C++右值引用与转移和完美转发
- Hibernate 的getHibernateTemplate()方法使用
- PMAC上位机编程基础1---编程环境配置
- idea控制台怎么调出来_酸汤饺子最近火了,可是酸汤是怎么调出来的?引起了网友的好奇...
- html新人入门代码,HTML入门(示例代码)
- 第一个WindowService服务
- 损失函数|交叉熵损失函数
- 在VC中如何找到崩溃的源头(二)
- 微信支付—微信H5支付「非微信内部浏览器-QQ/UC浏览器等」
- java中p.name_spring如何使用命名空间p简化bean的配置
- 大数据 数据库 评测_为什么腾讯QQ的大数据平台选择了这款数据库?
- webpack 4 入门教程一
- 数据统计作业0429_因子分析/FA
- layer icon对应图标
- 教程 | xampp mysql的可视化界面出现
- emule应用及原理(转载)
- Wamp的介绍和配置,解决安装时一些错误和配置上的一些需要,轻轻松松搭建以为window系统的服务器
- 我看好FLASH技术的原因
- Wireshark入门与进阶---Capture Options各项的含义与设定
- switchhosts使用指南
热门文章
- 总结的比较好的OpenGL教程
- 实现音视频编解码工具 MediaCodec 创建解码器
- 仿淘宝网站基于html网页模板设计静态网页模板参考.rar(项目源码)
- MATLAB VideoReader读取视频出错解决办法
- (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
- postgresql 客户端 uri 设置时区
- JavaScript留言板效果代码实例
- 下行物理信道rs_下行物理信道rs_LTE下行物理信道与物理信号
- 用计算机分析卫星云图 进行实时天气,卫星云图,气象卫星云图,卫星云图高清实时滚动播放 - 围观天气...
- 小程序组件库ColorUI教程