我想检查columnName
是否在数据库中的表T
中。我正在使用弹簧靴和mybatis。
这种检查应该只进行一次,以免在网络传输和时间上进行开销。
为什么?
在mybatis SQL query
SELECT * FROM T .. ORDER BY ${columnName}
我columnName
。你知道它很容易出现SQL注入。所以我必须检查表中T
是否是正确的列名。
方法1
表List <String> columnNames;
@PostConstruct
void initColumnNames() {
columnNames = mapper.getColumnNames();
}
的应用列中的硬代码。
方法2
void someDaoMethod(String columnName) {
if (columnNames == null) { //using approach 2 this if is unneccessary
columnNames = mapper.getColumnNames();
}
//check if columName is allowed (= is in columnNames)
}
方法3
在DAO(或mayby验证类)?:
src
|
+--app
|
+--components
| |
| +-component.ts
|
+--entities
|
+--entity.ts
你可以帮我解决这个问题吗?我应该选择什么方法?