View Javadoc
1   /*
2    *    Copyright 2016-2025 the original author or authors.
3    *
4    *    Licensed under the Apache License, Version 2.0 (the "License");
5    *    you may not use this file except in compliance with the License.
6    *    You may obtain a copy of the License at
7    *
8    *       https://www.apache.org/licenses/LICENSE-2.0
9    *
10   *    Unless required by applicable law or agreed to in writing, software
11   *    distributed under the License is distributed on an "AS IS" BASIS,
12   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *    See the License for the specific language governing permissions and
14   *    limitations under the License.
15   */
16  package org.mybatis.dynamic.sql.render;
17  
18  import org.mybatis.dynamic.sql.BindableColumn;
19  
20  public class MyBatis3RenderingStrategy extends RenderingStrategy {
21      @Override
22      public String getFormattedJdbcPlaceholder(String prefix, String parameterName) {
23          return "#{" //$NON-NLS-1$
24                  + prefix
25                  + "." //$NON-NLS-1$
26                  + parameterName
27                  + "}"; //$NON-NLS-1$
28      }
29  
30      @Override
31      public String getFormattedJdbcPlaceholder(BindableColumn<?> column, String prefix, String parameterName) {
32          return "#{" //$NON-NLS-1$
33                  + prefix
34                  + "." //$NON-NLS-1$
35                  + parameterName
36                  + renderJdbcType(column)
37                  + renderJavaType(column)
38                  + renderTypeHandler(column)
39                  + "}"; //$NON-NLS-1$
40      }
41  
42      @Override
43      public String getRecordBasedInsertBinding(BindableColumn<?> column, String parameterName) {
44          return "#{" //$NON-NLS-1$
45                  + parameterName
46                  + renderJdbcType(column)
47                  + renderJavaType(column)
48                  + renderTypeHandler(column)
49                  + "}"; //$NON-NLS-1$
50      }
51  
52      private String renderTypeHandler(BindableColumn<?> column) {
53          return column.typeHandler()
54                  .map(th -> ",typeHandler=" + th) //$NON-NLS-1$
55                  .orElse(""); //$NON-NLS-1$
56      }
57  
58      private String renderJdbcType(BindableColumn<?> column) {
59          return column.jdbcType()
60                  .map(jt -> ",jdbcType=" + jt.getName()) //$NON-NLS-1$
61                  .orElse(""); //$NON-NLS-1$
62      }
63  
64      private String renderJavaType(BindableColumn<?> column) {
65          return column.javaType()
66                  .map(jt -> ",javaType=" + jt.getName()) //$NON-NLS-1$
67                  .orElse(""); //$NON-NLS-1$
68      }
69  }