Skip to content

Commit 8b6758d

Browse files
author
Jarvis
committed
closed #48 : Escape character should be added to PGSQL queries
1 parent d89de56 commit 8b6758d

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed

src/main/java/org/springframework/data/mybatis/repository/dialect/Dialect.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ public final String quote(String name) {
108108
}
109109
}
110110

111+
public String wrapTableName(String tableName) {
112+
return tableName;
113+
}
111114

112115
public boolean supportsSequences() {
113116
return false;

src/main/java/org/springframework/data/mybatis/repository/dialect/PostgreSQLDialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ public PostgreSQLDialect() {
5252
super();
5353
}
5454

55+
@Override
56+
public String wrapTableName(String tableName) {
57+
return "\"" + tableName + "\"";
58+
}
59+
5560
@Override
5661
public String getDatabaseId() {
5762
return "postgresql";

src/main/java/org/springframework/data/mybatis/repository/support/MybatisMapperGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public void doWithPersistentProperty(PersistentProperty<?> pp) {
253253

254254
public String buildFrom(boolean basic) {
255255
StringBuilder builder = new StringBuilder();
256-
builder.append(persistentEntity.getTableName()).append(" ").append(quota(persistentEntity.getEntityName()));
256+
builder.append(dialect.wrapTableName(persistentEntity.getTableName())).append(" ").append(quota(persistentEntity.getEntityName()));
257257
if (!basic) {
258258
builder.append(buildLeftOuterJoin());
259259
}
@@ -268,7 +268,7 @@ private String buildLeftOuterJoin() {
268268
public void doWithAssociation(Association<? extends PersistentProperty<?>> ass) {
269269
if ((ass instanceof MybatisManyToOneAssociation)) {
270270
final MybatisManyToOneAssociation association = (MybatisManyToOneAssociation) ass;
271-
builder.append(" left outer join ").append(association.getObversePersistentEntity().getTableName()).append(" ").append(quota(persistentEntity.getEntityName() + "." + association.getInverse().getName()))
271+
builder.append(" left outer join ").append(dialect.wrapTableName(association.getObversePersistentEntity().getTableName())).append(" ").append(quota(persistentEntity.getEntityName() + "." + association.getInverse().getName()))
272272
.append(" on ").append(quota(persistentEntity.getEntityName())).append(".").append(association.getJoinColumnName())
273273
.append("=").append(quota(persistentEntity.getEntityName() + "." + association.getInverse().getName())).append(".").append(association.getJoinReferencedColumnName());
274274
}

src/main/java/org/springframework/data/mybatis/repository/support/MybatisSimpleRepositoryMapperGenerator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private String render() throws IOException {
115115
builder.append("<mapper namespace=\"" + domainClass.getName() + "\">");
116116

117117
if (!isFragmentExist("TABLE_NAME")) {
118-
builder.append("<sql id=\"TABLE_NAME\">" + persistentEntity.getTableName() + "</sql>");
118+
builder.append("<sql id=\"TABLE_NAME\">" + dialect.wrapTableName(persistentEntity.getTableName()) + "</sql>");
119119
}
120120
if (dialect.supportsSequences()) {
121121
if (!isFragmentExist("SEQUENCE")) {
@@ -182,7 +182,7 @@ private void buildUpdateSQL(final StringBuilder builder) {
182182
return;
183183
}
184184
builder.append("<update id=\"_update\" parameterType=\"" + domainClass.getName() + "\" lang=\"XML\">");
185-
builder.append("update ").append(persistentEntity.getTableName());
185+
builder.append("update ").append(dialect.wrapTableName(persistentEntity.getTableName()));
186186
builder.append("<set>");
187187

188188
persistentEntity.doWithProperties(new SimplePropertyHandler() {
@@ -356,7 +356,7 @@ private void buildFindByPager(StringBuilder builder) {
356356
}
357357

358358
private void buildDeleteAll(StringBuilder builder) {
359-
builder.append("<delete id=\"_deleteAll\">truncate table " + persistentEntity.getTableName() + " </delete>");
359+
builder.append("<delete id=\"_deleteAll\">truncate table " +dialect.wrapTableName( persistentEntity.getTableName() )+ " </delete>");
360360
}
361361

362362
private void buildDeleteById(final StringBuilder builder) {
@@ -558,7 +558,7 @@ private void buildInsertSQL(final StringBuilder builder) {
558558
IdentityColumnSupport identityColumnSupport = dialect.getIdentityColumnSupport();
559559
if (idProperty.getIdGenerationType() == IDENTITY || (idProperty.getIdGenerationType() == AUTO && identityColumnSupport.supportsIdentityColumns())) {
560560
builder.append("<selectKey keyProperty=\"" + idProperty.getName() + "\" resultType=\"" + idProperty.getActualType().getName() + "\" order=\"AFTER\">");
561-
builder.append(dialect.getIdentityColumnSupport().getIdentitySelectString(persistentEntity.getTableName(), idProperty.getColumnName(), idProperty.getJdbcType().TYPE_CODE));
561+
builder.append(dialect.getIdentityColumnSupport().getIdentitySelectString(dialect.wrapTableName(persistentEntity.getTableName()), idProperty.getColumnName(), idProperty.getJdbcType().TYPE_CODE));
562562
builder.append("</selectKey>");
563563
} else if (idProperty.getIdGenerationType() == SEQUENCE || (idProperty.getIdGenerationType() == AUTO && dialect.supportsSequences())) {
564564
builder.append("<selectKey keyProperty=\"" + idProperty.getName() + "\" resultType=\"" + idProperty.getActualType().getName() + "\" order=\"BEFORE\">");
@@ -568,7 +568,7 @@ private void buildInsertSQL(final StringBuilder builder) {
568568
}
569569
builder.append("<![CDATA[");
570570

571-
builder.append("insert into ").append(persistentEntity.getTableName()).append("(");
571+
builder.append("insert into ").append(dialect.wrapTableName(persistentEntity.getTableName())).append("(");
572572

573573

574574
persistentEntity.doWithProperties(new SimplePropertyHandler() {

0 commit comments

Comments
 (0)