可将数据库表字段转换为Java代码驼峰字段SQL的实现

简介: 经常要将数据库表字段映射到实体对象,除了逆向工程,还可以通过SQL的方式将表字段列转换为Java代码驼峰字段。

通过SQL的方式将表字段列转换为Java代码驼峰字段的SQL脚本:
select colName,case when line=0 then colName else head||upper end field from
(
select lower(column_name) as colName, instr(lower(column_name),'_') line,
substr(lower(column_name),0,instr(lower(column_name),'_')-1) head,
replace(initcap(substr(lower(column_name),instr(lower(column_name),'_')+1)),'_','') upper
from user_tab_columns where lower(table_name) = 'XXX'
);

生成java代码:
select colName,case when line=0 then dataType || colName || ';' else dataType || head||upper ';' end field from
(
select lower(column_name) as colName, instr(lower(column_name),'_') line,
substr(lower(column_name),0,instr(lower(column_name),'_')-1) head,
replace(initcap(substr(lower(column_name),instr(lower(column_name),'_')+1)),'_','') upper,
case when data_type = 'NUMBER' then 'private Integer ' when data_type='VARCHAR2' then 'private String ' when data_type = 'TIMESTAMP(0)' then 'private DateTime ' else data_type end dataType
from user_tab_columns where lower(table_name) = 'XXX'
);

生成java代码包括列注释:

select colName,

   '/**' || comments || '*/' || chr(9) || (case
     when line = 0 then
      dataType || colName || ';'
     else
      dataType || head || upper ';'
   end) field,
   comments

from (select lower(t1.column_name) as colName,

           instr(lower(t1.column_name), '_') line,
           substr(lower(t1.column_name),
                  0,
                  instr(lower(t1.column_name), '_') - 1) head,
           replace(initcap(substr(lower(t1.column_name),
                                  instr(lower(t1.column_name), '_') + 1)),
                   '_',
                   '') upper,
           case
             when t1.data_type = 'NUMBER' then
              'private Integer '
             when t1.data_type = 'VARCHAR2' then
              'private String '
             when t1.data_type = 'TIMESTAMP(0)' then
              'private DateTime '
             else
              t1.data_type
           end dataType,

t2.comments

      from user_tab_columns t1
      left join user_col_columns t2 on t1.table_name = t2.table_name
                                   and t1.column_name = t2.column_name
     where lower(t1.table_name) = 'XXX');
相关文章
|
4天前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
27 5
|
6天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
33 2
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
110 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。