CN116069755A - mapper文件处理方法及相关设备 - Google Patents
mapper文件处理方法及相关设备 Download PDFInfo
- Publication number
- CN116069755A CN116069755A CN202211352192.3A CN202211352192A CN116069755A CN 116069755 A CN116069755 A CN 116069755A CN 202211352192 A CN202211352192 A CN 202211352192A CN 116069755 A CN116069755 A CN 116069755A
- Authority
- CN
- China
- Prior art keywords
- mapper
- file
- mapper file
- database
- characters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种mapper文件处理方法及相关设备,包括:获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件,对所述mapper文件进行安全检查与修复,得到安全mapper文件,响应于确定所述数据库迁移,对所述安全mapper文件中字符进行替换,得到与迁移后的数据库相适配的安全mapper文件。本公开解决了当前MyBatis框架中,框架自身不存在保护机制,且框架自身兼容性较差的问题。
Description
技术领域
本公开涉及信息化开发技术领域,尤其涉及一种mapper文件处理方法及相关设备。
背景技术
在信息化开发领域,java开发者除了需要编写大量的SQL语句,还要频繁操作数据库的事务,而不能把精力集中于业务逻辑上,开发效率低下。为解决以上信息化***与数据库交互的问题,各种有关数据库操作框架应运而生,目前数据库操作框架比较流行的有hibernate、MyBatis两种,而MyBatis框架在灵活性和扩展性方面较hibernate方面有较大的优势,因此越来越多的开发者在更多场合下选择使用MyBatis框架。但当前MyBatis框架中,框架自身并不存在保护机制,且框架自身兼容性较差。
发明内容
有鉴于此,本公开的目的在于提出一种mapper文件处理方法及相关设备,用以解决或部分解决上述问题。
基于上述目的,本公开的第一方面提供了一种mapper文件处理方法,所述方法包括:
获取数据库的数据信息;
根据所述数据信息生成实体类以及mapper接口与mapper文件;
对所述mapper文件进行安全检查与修复,得到安全mapper文件;
响应于确定所述数据库迁移,对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
可选地,所述获取数据库的数据信息,包括:
获取数据库中的所有数据表的表名;
根据所述数据表的表名对所述数据表进行查询,得到所述数据表中的元数据基本信息。
可选地,所述元数据基本信息包括:字段名、字段类型和字段是否为空。
可选地,所述根据所述数据信息自动生成实体类以及mapper接口与mapper文件,包括:
将所述元数据基本信息存入所述数据库中的TableInfo类;
将所述TableInfo类填入所述实体类的模板,并存放在所述实体类的目录下;
在所述mapper接口中创建对所述数据表的基础SQL操作方法,将所述基础SQL操作方法存放在java接口目录下;
在所述mapper文件中根据所述基础SQL操作方法得到SQL操作语句,并将所述SQL操作语句存放在所述mapper文件的目录下。
可选地,所述对所述mapper文件进行安全检查与自动修复,得到安全mapper文件,包括:
对所述mapper文件进行遍历,匹配风险字符,所述风险字符包括拼接字符串字符$;
响应于所述mapper文件中包含所述$字符,确定通过substring方法截取包含所述$字符的完整SQL语句;
将所述$符号替换成#符号,得到安全mapper文件,并记录所述mapper文件的修改信息。
可选地,所述方法还包括:
响应于确定所述完整SQL语句包含特殊函数,根据所述特殊函数进行特殊处理;
响应于所述特殊函数为in函数,确定在所述完整SQL语句中添加foreach函数,将所述$符号替换成#符号;
响应于所述特殊函数为like函数,确定在所述完整SQL语句中添加concat函数,将所述$符号替换成#符号;
响应于所述特殊函数为order by函数,确定将所述完整SQL语句发送至用户端进行检查。
可选地,所述响应于确定所述数据库进行迁移,对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件,包括:
对所述mapper文件进行遍历,得到特征字符;
对所述特征字符进行解析替换,得到与迁移后的数据库相适配的安全mapper文件;
记录所述安全mapper文件的修改信息。
基于同一发明构思,本公开的第二方面提出了一种mapper文件处理***,包括:
代码生成模块,被配置为获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件;
代码安全防护模块,被配置为对所述mapper文件进行安全检查与修复,得到安全mapper文件;
数据库适配模块,被配置为对所述安全mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
基于同一发明构思,本公开的第三方面提出了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上所述的方法。
基于同一发明构思,本公开的第四方面提出了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如上所述的方法。
从上面所述可以看出,本公开提供了一种mapper文件处理方法及相关设备,通过获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件,对所述mapper文件进行安全检查与修复,得到安全mapper文件,响应于确定所述数据库迁移,对所述安全mapper文件中字符进行替换,得到与迁移后的数据库相适配的安全mapper文件。基于本公开实施的方案,通过对mapper文件进行安全检查与修复,降低了开发的安全风险,提高了java***操作数据库的代码安全性;当数据库迁移时,对mapper文件中的字符进行检查替换,解决了框架自身兼容性较差,用户手动修改时准确性较低的问题,提高***兼容性、减少数据库迁移的工作量。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的mapper文件处理方法的流程图;
图2A为本公开另一应用场景下的实施例的第一部分流程图;
图2B为本公开另一应用场景下的实施例的第二部分流程图;
图2C为本公开另一应用场景下的实施例的第三部分流程图;
图3为本公开实施例的mapper文件处理***的结构框图;
图4为本公开实施例的电子设备的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如上所述,当前基于MyBatis框架的mapper文件处理方法中存在框架自身并不存在保护机制,且框架自身兼容性较差,用户手动修改时准确性较低的问题。
本公开所涉及的名词解释如下:
MyBatis框架:MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
mapper:映射器(mapper)是MyBatis中最重要的文件,文件中包含一组SQL语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射SQL语句。
mapper文件:mapper映射文件是xml格式的配置文件,由一系列具有层级关系的元素组成。
SQL:SQL(Structured Query Language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理***应充分利用SQL语言提高计算机应用***的工作质量与效率。
Oracle:Oracle Database,又名Oracle RDBMS,或简称Oracle。***可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
MySQL:MySQL是一个关系型数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
基于上述描述,本实施例提出了一种mapper文件处理方法,如图1所示,所述方法包括:
步骤101,获取数据库的数据信息。
具体实施时,在数据库设计完成、数据库中建表完成的情况下,连接所述数据库,获取所述数据库中的数据信息。
在一些实施例中,所述获取数据库的数据信息,包括获取数据库中的所有数据表的表名;根据所述数据表的表名对所述数据表进行查询,得到所述数据表中的元数据基本信息。
具体实施时,数据库连接完成后,***从所述数据库中进行遍历查找,得到与项目相关的所有数据表的表名,根据获取到的表名对所述数据表进行查询,查询得出所述数据表中的元数据基本信息。通过表名对所述数据库进行查找并获取表内相关信息,可以有效提高查找的准确性,提高查询效率。
在一些实施例中,所述元数据基本信息包括字段名、字段类型和字段是否为空。
具体实施时,根据获取到的与项目相关的数据表的表名,对所述数据表进行精确查找,得到所述数据表中有关字段名、字段类型和字段是否为空的信息。
步骤102,根据所述数据信息生成实体类及mapper接口与mapper文件。
具体实施时,***获取到数据表中的数据信息,其中数据信息包含字段名、字段类型和字段是否为空的信息,根据上述数据信息,在***中生成实体类以及相关mapper接口与mapper文件。
在一些实施例中,步骤102包括:
步骤1021,将所述元数据基本信息存入所述数据库中的TableInfo类。
具体实施时,TableInfo类表示数据库中表的信息,对数据表进行查询得到所述数据表中的元数据基本信息,其中元数据基本信息包括字段名、字段类型和字段是否为空的信息,将上述元数据基本信息存入到所述数据库中的TableInfo类中。
步骤1022,将所述TableInfo类填入所述实体类的模板,并存放在所述实体类的目录下。
具体实施时,TableInfo类中接收并保存所述元数据基本信息后,将所述TableInfo类填入根据数据信息生成的实体类的模板中,并将所述实体类模板存放至所述实体类的目录下,以供数据库调取使用。
步骤1023,在所述mapper接口中创建对所述数据表的基础SQL操作方法,将所述基础SQL操作方法存放在java接口目录下。
具体实施时,根据数据库中的数据信息生成mapper接口,在所述mapper接口中创建对所述数据表的基础SQL操作方法,例如对所述数据表的修改操作方法、删除操作方法、***操作方法等,并将所述基础SQL操作方法存放在java接口目录下。
步骤1024,在所述mapper文件中根据所述基础SQL操作方法得到SQL操作语句,并将所述SQL操作语句存放在所述mapper文件的目录下。
具体实施时,根据数据库中的数据信息生成mapper文件,在所述mapper文件中,根据步骤1023中得到的所述数据表的基础SQL操作方法,得到相对应的基础SQL操作语句,例如对所述数据表的修改操作语句、删除操作语句、***操作语句等,并将得到的基础SQL操作语句存放在所述mapper文件的目录下。
步骤103,对所述mapper文件进行安全检查与修复,得到安全mapper文件。
具体实施时,在mapper文件中,部分基本SQL语句由处理器自动生成,大部分SQL操作语句由用户自行编写,编写完成后,***对mapper文件进行安全检查与修复,可有效提高代码的准确性,增强***的安全性。
在一些实施例中,步骤103具体包括:
步骤1031,对所述mapper文件进行遍历,匹配风险字符,所述风险字符包括拼接字符串字符$。
具体实施时,对所述mapper文件进行遍历查询,进行风险字符的查找匹配,其中风险字符包括拼接字符串字符$。
步骤1032,响应于所述mapper文件中包含所述$字符,确定通过substring方法截取包含所述$字符的完整SQL语句。
具体实施时,substring方法用于提取字符串中介于两个指定下标之间的字符,当对所述mapper文件中进行遍历查询,查询结果包含$字符时,通过substring方法进行截取,得到包含所述$字符的完整SQL语句。
步骤1033,将所述$符号替换成#符号,得到安全mapper文件,并记录所述mapper文件的修改信息。
具体实施时,当所述mapper文件中查询包含$符号时,通过substring方法截取包含所述$字符的完整SQL语句,将完整SQL语句中的所述拼接字符串字符$改成预编译字符#,得到更改后的SQL语句,包含所述更改后的SQL语句的mapper文件为安全mapper文件。记录所述mapper文件所进行的修改,得到修改信息,其中修改信息包含所进行的操作、修改前的完整SQL语句、修改后的完整SQL语句等。
在一些实施例中,步骤103还包括:
步骤103A,响应于确定所述完整SQL语句包含特殊函数,根据所述特殊函数进行特殊处理。
具体实施时,在所述mapper文件中查询包含$符号时,通过substring方法截取包含所述$字符的完整SQL语句后,判断所述完整SQL语句中是否包含有特殊函数,如包含则进行特殊处理。其中特殊函数包含下列至少之一:in函数、like函数、order by函数。
步骤103B,响应于所述特殊函数为in函数,确定在所述完整SQL语句中添加foreach函数,将所述$符号替换成#符号。
具体实施时,当所述特殊函数为in函数时,在所述完整SQL语句中添加foreach函数的相关语句,同时将完整SQL语句中的所述拼接字符串字符$改成预编译字符#。
例如,通过substring方法截取到的包含所述$字符的完整SQL语句为select*fromsimCard where name in(${names}),此时在SQL语句中添加foreach函数,再将所述$符号替换成#符号,修改后的完整SQL语句为select*from simCard where name in<foreachcollection=”names”item=”name”open=”(“seperator=”,”close=”)”>(#{names})</foreach>,此时预编译字符#可起到安全防护作用,提高了***的安全性。
步骤103C,响应于所述特殊函数为like函数,确定在所述完整SQL语句中添加concat函数,将所述$符号替换成#符号。
具体实施时,当所述特殊函数为like函数时,在所述完整SQL语句中添加concat函数的相关语句,同时将完整SQL语句中的所述拼接字符串字符$改成预编译字符#。
例如,通过substring方法截取到的包含所述$字符的完整SQL语句为select*fromsimCards where name like‘%${name}%’,此时将完整SQL语句中***concat并对所述SQL语句进行重新拼接,再将所述$符号替换成#符号,修改后的完整SQL语句为select*fromsimCards where name like concat(‘%’,#{name},’%’),此时预编译字符#可起到安全防护作用,提高了***的安全性。
步骤103D,响应于所述特殊函数为order by函数,确定将所述完整SQL语句发送至用户端进行检查。
具体实施时,当所述特殊函数为order by函数时,order by函数用于进行排序,将$符号替换成#符号会导致排序失效,此时处理器会进行标红处理并通知用户检查order by函数后所引用的参数是否经过处理,并给出相关处理示例。示例代码的作用相当于在***中建立白名单,限定传入的参数,因参数可控即可使用$字符,由于白名单的具体定义与***业务有关,处理器仅进行提醒与给出参考示例,具体实现方式需用户根据实际业务进行检查并结合实际情况进行处理。
例如,通过substring方法截取到的包含所述$字符的完整SQL语句为select*fromsimCardAlarm for alarmList order by${alarmTime}${orderMode},order by函数后所引用的参数,第一个参数为告警时间alarmTime,限定为初始时间与更新时间,即rawTime与updateTime,后一个参数orderMode的排序方式只有“asc”和“desc”两种。将所述完整SQL语句标红,并通知用户检查,给出的示例代码为:
步骤104,响应于确定所述数据库迁移,对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
具体实施时,在软件***建设中,如因为上云或其他原因,数据库迁移时常发生。对于不同的数据库,mapper文件中的部分写法有所不同,通过对mapper文件中的字符进行查找替换,可减少用户手动修改的工作量,并提高修改的准确性。
在一些实施例中,以Oracle转MySQL数据库为例,步骤104具体包括:
步骤1041,对所述mapper文件进行遍历,得到特征字符。
具体实施时,对当前mapper文件进行遍历查询,匹配Oracle特征字符。
步骤1042,对所述特征字符进行解析替换,得到与迁移后的数据库相适配的mapper文件。
具体实施时,对匹配到的Oracle特征字符进行解析,根据不同的类型进行相应的处理,其中所述类型包含数据类型、函数类型等。根据处理结果得到与迁移后的数据库MySQL相适配的mapper文件。
例如,数据类型为Number类型,对其后所带参数数量进行分析,若参数数量为1个,则将所述Number类型替换为int类型;若参数数量为2个,则将所述Number类型替换为decimal类型。对于数据类型中Oracle的Varchar2对应mySQL的var'char,Oracle的Date类型对应MySQL中的Datetime等,可直接替换。
又如,函数类型方面如decode函数、trank函数、to_char函数等,需截取整个SQL语句进行解析,提取参数组装为MySQL的case then函数。对于函数类型中Oracle中的length(str)对应MySQL的char_length(str)等,可直接替换。
步骤1043,记录所述mapper文件的修改信息。
具体实施时,对于由于数据库转换进行的对mapper文件的修改,需记录mapper文件的修改信息,其中修改信息包括文件名、修改位置、数据类型的更改、函数类型的修改等。
在上述方案中,通过对mapper文件进行安全检查与修复,有效提高代码的准确性,增强***的安全性,保证了java***操作数据库的代码安全性;通过在数据库迁移时,对mapper文件中的字符进行替换处理,可提高***的兼容性,减少数据库迁移时用户手动修改的工作量,提高修改的准确性。
基于同一发明构思,本公开在应用场景下的另一实施例,包括:
步骤201,获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件。
具体实施时,如图2A所示,首先连接数据库,创建链接,并通过链接connection的metaData获取到数据库中数据表的数据信息。组装文件内容信息到内存,其中文件内容信息包括mapper接口内容与mapper文件内容。创建新文件,将上述组装内容写入所述创建的文件中,并将所述文件存入相应的目录。
步骤202,对所述mapper文件进行安全检查与修复。
具体实施时,如图2B所示,对所述mapper文件进行遍历查询,匹配得到风险字符。对所述风险字符进行解析,并截取该位置的完整SQL语句。判断截取得到的完整SQL语句中是否存在特殊函数,如若存在,则按照特殊函数对应进行缺陷修复,其中,特殊函数包括以下至少之一:in函数、like函数、order by函数;若不存在特殊函数,则将风险字符替换为安全的参数符号。
步骤203,响应于确定所述数据库迁移,对所述mapper文件进行适配替换。
具体实施时,如图2C所示,以Oracle转MySQL数据库为例,对所述mapper文件进行遍历查询,匹配Oracle特征字符。针对所述特征字符进行划分,若所述Oracle特征字符为Oracle特征函数名,则转到对应函数处理方法进行处理,对所述SQL语句进行参数提取,按照MySQL函数规则对所述SQL语句进行重新编排并进行替换,记录修改的文件信息,包括文件名及改变位置等。若为非函数体的特征字符,则用MySQL规则进行替换,记录修改信息。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种mapper文件处理***。
参考图3,图3为实施例的mapper文件处理***,包括:
代码生成模块301,被配置为获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件;
代码安全防护模块302,被配置为对所述mapper文件进行安全检查与修复,得到安全mapper文件;
数据库适配模块303,被配置为对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
在一些实施例中,代码自动生成模块301具体包括:
信息获取处理单元,被配置为获取数据库中的所有数据表的表名,根据所述数据表的表名对所述数据表进行查询,得到所述数据表中的元数据基本信息。
数据存放处理单元,被配置为将所述元数据基本信息存入所述数据库中的TableInfo类;将所述TableInfo类填入所述实体类的模板,并存放在所述实体类的目录下;在所述mapper接口中创建对所述数据表的基础SQL操作方法,将所述基础SQL操作方法存放在java接口目录下;在所述mapper文件中根据所述基础SQL操作方法得到SQL操作语句,并将所述SQL操作语句存放在所述mapper文件的目录下。
在一些实施例中,代码安全防护模块302具体包括:
遍历匹配单元,被配置为对所述mapper文件进行遍历,匹配风险字符,所述风险字符包括拼接字符串字符$。
语句截取单元,被配置为响应于所述mapper文件中包含所述$字符,确定通过substring方法截取包含所述$字符的完整SQL语句。
替换记录单元,被配置为将所述$符号替换成#符号,得到安全mapper文件,并记录所述mapper文件的修改信息。
特殊处理单元,被配置为响应于确定所述完整SQL语句包含特殊函数,根据所述特殊函数进行特殊处理。
在一些实施例中,数据库适配模块303具体包括:
遍历查询单元,被配置为对所述mapper文件进行遍历查询,得到特征字符。
解析替换单元,被配置为对所述特征字符进行解析替换,得到与迁移后的数据库相适配的安全mapper文件。
信息记录单元,被配置为记录所述mapper文件的修改信息。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的mapper文件处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的mapper文件处理方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的mapper文件处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的mapper文件处理方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的mapper文件处理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种mapper文件处理方法,其特征在于,包括:
获取数据库的数据信息;
根据所述数据信息生成实体类以及mapper接口与mapper文件;
对所述mapper文件进行安全检查与修复,得到安全mapper文件;
响应于确定所述数据库迁移,对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
2.根据权利要求1所述的方法,其特征在于,所述获取数据库的数据信息,包括:
获取数据库中的所有数据表的表名;
根据所述数据表的表名对所述数据表进行查询,得到所述数据表中的元数据基本信息。
3.根据权利要求2所述的方法,其特征在于,所述元数据基本信息包括:字段名、字段类型和字段是否为空。
4.根据权利要求2所述的方法,其特征在于,所述根据所述数据信息自动生成实体类以及mapper接口与mapper文件,包括:
将所述元数据基本信息存入所述数据库中的TableInfo类;
将所述TableInfo类填入所述实体类的模板,并存放在所述实体类的目录下;
在所述mapper接口中创建对所述数据表的基础SQL操作方法,将所述基础SQL操作方法存放在java接口目录下;
在所述mapper文件中根据所述基础SQL操作方法得到SQL操作语句,并将所述SQL操作语句存放在所述mapper文件的目录下。
5.根据所述权利要求1所述的方法,其特征在于,所述对所述mapper文件进行安全检查与自动修复,得到安全mapper文件,包括:
对所述mapper文件进行遍历,匹配风险字符,所述风险字符包括拼接字符串字符$;
响应于所述mapper文件中包含所述$字符,确定通过substring方法截取包含所述$字符的完整SQL语句;
将所述$符号替换成#符号,得到安全mapper文件,并记录所述mapper文件的修改信息。
6.根据权利要求5所述的方法,其特征在于,还包括:
响应于确定所述完整SQL语句包含特殊函数,根据所述特殊函数进行特殊处理;
响应于所述特殊函数为in函数,确定在所述完整SQL语句中添加foreach函数,将所述$符号替换成#符号;
响应于所述特殊函数为like函数,确定在所述完整SQL语句中添加concat函数,将所述$符号替换成#符号;
响应于所述特殊函数为order by函数,确定将所述完整SQL语句发送至用户端进行检查。
7.根据权利要求1所述的方法,其特征在于,所述响应于确定所述数据库进行迁移,对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件,包括:
对所述mapper文件进行遍历,得到特征字符;
对所述特征字符进行解析替换,得到与迁移后的数据库相适配的mapper文件;
记录所述mapper文件的修改信息。
8.一种mapper文件处理***,其特征在于,包括:
代码生成模块,被配置为获取数据库的数据信息,根据所述数据信息生成实体类以及mapper接口与mapper文件;
代码安全防护模块,被配置为对所述mapper文件进行安全检查与修复,得到安全mapper文件;
数据库适配模块,被配置为对所述mapper文件中字符进行替换,得到与迁移后的数据库相适配的mapper文件。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352192.3A CN116069755A (zh) | 2022-10-31 | 2022-10-31 | mapper文件处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352192.3A CN116069755A (zh) | 2022-10-31 | 2022-10-31 | mapper文件处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116069755A true CN116069755A (zh) | 2023-05-05 |
Family
ID=86172266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211352192.3A Pending CN116069755A (zh) | 2022-10-31 | 2022-10-31 | mapper文件处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069755A (zh) |
-
2022
- 2022-10-31 CN CN202211352192.3A patent/CN116069755A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959106B2 (en) | Class loading using java data cartridges | |
US8447744B2 (en) | Extensibility platform using data cartridges | |
US8601016B2 (en) | Pre-generation of structured query language (SQL) from application programming interface (API) defined query systems | |
CN107122368B (zh) | 一种数据校验方法、装置及电子设备 | |
WO2019237333A1 (en) | Converting database language statements between dialects | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
CN108509199A (zh) | 自动生成中文注释的方法、装置、设备及存储介质 | |
CN114356851B (zh) | 数据文件的存储方法、装置、电子设备及存储介质 | |
CN113448562B (zh) | 一种逻辑代码自动生成方法、装置和电子设备 | |
JP2020119348A (ja) | 解析プログラム、解析方法および解析装置 | |
CN112035443A (zh) | 基于Linux平台的大数据执行方法、***、设备及存储介质 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
Ledvinka et al. | A comparison of object-triple mapping libraries | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
EP3816814A1 (en) | Crux detection in search definitions | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
US9201937B2 (en) | Rapid provisioning of information for business analytics | |
CN116069755A (zh) | mapper文件处理方法及相关设备 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN114791882A (zh) | 变量命名冲突解决方法和装置、电子设备、存储介质 | |
CN114281845A (zh) | 索引生成方法、装置、电子设备及可读存储介质 | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
CN112883044A (zh) | 用于数据库的数据处理方法、装置及计算机可读介质 | |
Matter | Big data analytics: a guide to data science practitioners making the transition to big data | |
US20240193135A1 (en) | Systems, methods, and media for accessing derivative properties from a post relational database utilizing a logical schema instruction that includes a base object identifier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |