文档章节

在 Java 中如何更高效地存储和管理 SQL 语句?

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2015/08/19 18:54
字数 488
阅读 98
收藏 9

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

【编者按】还在为管理 Java 代码中的 SQL 语句而烦恼吗?让 Zemian 帮你摆脱困境吧!本文系 OneAPM 工程师编译整理

**注意:**使用java.util.Properties#loadFromXML其实会更简单!

在 Java 中如何更高效地存储和管理 SQL 语句?

如果使用的是普通的、没有任何外部类库的 Java JDBC,那么就必须得自己去管理 SQL 语句。很不幸的是,Java String 并不支持多行结构,所以开发者必须使用许多引号+连接符来拼接语句,这会使得 SQL 语句非常难于阅读和管理。同时,这也使得维护和测试(尝试从 Java 代码中 Copy 一条 SQL 语句到 SQL 客户端运行)更加困难。如果能保证整条 SQL 语句完好无缺,又避免了 Java 的干扰,那该有多好啊!

这里有个快速解决方案,把 SQL 查询语句存储在 XML 的 CDATA 里面:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sqlMap>
    <sqls>
        <entry>
            <key>getUser</key>
            <value><![CDATA[
SELECT *
FROM USERS
WHERE ID = ?
            ]]></value>
        </entry>
        <entry>
            <key>getSpecialCodeByUserId</key>
            <value><![CDATA[
SELECT u.EMAIL, p.ID as PROFILEID, p.SPECIALCODE, a.MANAGERID
FROM USERS u
  LEFT JOIN PROFILE p ON p.USERID = u.ID
  LEFT JOIN ACCOUNT a ON a.PROFILEID = p.ID
WHERE u.ID = ?  ]]></value>
        </entry>  </sqls>
</sqlMap>

如果现在再去读 SQL 语句,开发者可以利用内建的 JAXB。

import javax.xml.bind.annotation.XmlRootElement;
import java.util.HashMap;
import java.util.Map;
@XmlRootElement
public class SqlMap {
    Map<String, String> sqls = new HashMap<>();
    public Map<String, String> getSqls() {
        return sqls;
    }
    public void setSqls(Map<String, String> sqls) {
        this.sqls = sqls;
    }
    public String getSql(String name) {
        return sqls.get(name);
    }
    public static SqlMap load(String name) throws Exception {
        String xml = Utils.loadString(name);
        SqlMap sqlMap = unmarshallXML(xml );
        return sqlMap;
    }
}

原文链接:How to Store and Manage SQL Statements More Effectively With Java

OneAPM for Java 能够深入到所有 Java 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。想阅读更多技术文章,请访问 OneAPM 官方博客

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
JDBC(Java Data Base Connectivity,java数据库连接)

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法,JDBC对...

冰雷卡尔
2012/06/03
590
0
通过JDBC进行简单的增删改查(以MySQL为例)

前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4...

Airship
2015/07/13
431
0
好程序员Java教程解读JDBC是什么

  好程序员解读JDBC是什么,JDBC简介- JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的...

好程序员IT
2019/07/25
47
0
JDBC Statement PreparedStatement CallableStatement

在 JDBC 应用程序中,JDBC 语句对象用于将 SQL 语句发送到数据库服务器。一个语句对象与一个连接相关联,应用程序与数据库服务器之间的通信由语句对象来处理。 JDBC 中有三种类型的语句对象:...

learn_more
2014/12/13
201
0
关于Jmeter中JDBC相关参数的应用

一.数据库驱动类和URL格式: Database Driver class Database URL MySQL com.mysql.jdbc.Driver jdbc:mysql://host[:port]/dbname PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname......

蓝蝶飞扬
2014/10/27
221
0

没有更多内容

加载失败,请刷新页面

加载更多

dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
33
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
10
0
Maven打包可执行Jar包的方法

在使用Java开发中,会使用到将工程打包成可执行的jar包的情况,那么在maven中怎么将项目中的依赖包都添加到jar中呢。在pom.xml中添加一下插件: <build><plugins><plugin><ar...

CapJes
今天
10
0
使用vue 开发地图类系统(openlayers.js)的注意。

使用vue 开发地图类系统的注意。 1、使用地图应该创建的对象 少使用 vue 的data 和计算属性(comments)存数据或是vuex。 为什么要要注意这个问题呢? 答:这个就要了解到vue的实现原理 。原理...

DY-Tao
昨天
7
0
web移动端学习:高德地图demo(一)

在高德地图开发中申请开发者资格,然后在控制台中新建应用,获得KEY; 新建模板HTML文件; <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>地图demo</title><scri......

dxiya
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部