Browse Source

开启下划线驼峰情况,消灭 2.x AS

hubin 7 years ago
parent
commit
12a27811ae

+ 3 - 7
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -231,13 +231,9 @@ public abstract class AbstractMethod {
                 while (iterator.hasNext()) {
                     TableFieldInfo fieldInfo = iterator.next();
                     // 匹配转换内容
-                    String wordConvert = sqlWordConvert(fieldInfo.getProperty());
-                    if (fieldInfo.getColumn().equals(wordConvert)) {
-                        columns.append(wordConvert);
-                    } else {
-                        // 字段属性不一致
-                        columns.append(fieldInfo.getColumn());
-                        columns.append(" AS ").append(wordConvert);
+                    columns.append(this.sqlWordConvert(fieldInfo.getColumn()));
+                    if (fieldInfo.isRelated()) {
+                        columns.append(" AS ").append(fieldInfo.getProperty());
                     }
                     if (i + 1 < size) {
                         columns.append(",");

+ 16 - 11
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java

@@ -97,8 +97,8 @@ public class TableFieldInfo {
      * 存在 TableField 注解构造函数
      * </p>
      */
-    public TableFieldInfo(DbConfig dbConfig, TableInfo tableInfo, String column,
-                          String el, Field field, TableField tableField) {
+    public TableFieldInfo(boolean underCamel, DbConfig dbConfig, TableInfo tableInfo,
+                          String column, String el, Field field, TableField tableField) {
         this.property = field.getName();
         this.propertyType = field.getType();
         /*
@@ -106,17 +106,19 @@ public class TableFieldInfo {
          * 2、没有开启下划线申明,但是column与property不等的情况<br>
          * 设置 related 为 true
          */
-        if (StringUtils.isEmpty(tableField.value())
-            && dbConfig.isColumnUnderline()) {
+        if (StringUtils.isEmpty(tableField.value())) {
             /* 开启字段下划线申明 */
-            this.related = true;
-            this.setColumn(dbConfig, StringUtils.camelToUnderline(column));
-        } else {
-            this.setColumn(dbConfig, column);
-            if (!column.equals(this.property)) {
+            if (dbConfig.isColumnUnderline()) {
+                column = StringUtils.camelToUnderline(column);
+            }
+            /* 未开启下划线转驼峰模式 AS 转换 */
+            if (!underCamel) {
                 this.related = true;
             }
+        } else if (!column.equals(this.property)) {
+            this.related = true;
         }
+        this.setColumn(dbConfig, column);
         this.el = el;
         /*
          * 优先使用单个字段注解,否则使用全局配置
@@ -135,11 +137,14 @@ public class TableFieldInfo {
         this.fieldFill = tableField.fill();
     }
 
-    public TableFieldInfo(DbConfig dbConfig, TableInfo tableInfo, Field field) {
+    public TableFieldInfo(boolean underCamel, DbConfig dbConfig, TableInfo tableInfo, Field field) {
         if (dbConfig.isColumnUnderline()) {
             /* 开启字段下划线申明 */
-            this.related = true;
             this.setColumn(dbConfig, StringUtils.camelToUnderline(field.getName()));
+            /* 未开启下划线转驼峰模式 AS 转换 */
+            if (!underCamel) {
+                this.related = true;
+            }
         } else {
             this.setColumn(dbConfig, field.getName());
         }

+ 33 - 19
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableInfoHelper.java

@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlHelper;
+
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
 import org.apache.ibatis.executor.keygen.NoKeyGenerator;
@@ -135,6 +136,11 @@ public class TableInfoHelper {
             globalConfig = GlobalConfigUtils.DEFAULT;
         }
 
+        /***
+         * 是否开启下划线转驼峰模式
+         */
+        boolean underCamel = builderAssistant.getConfiguration().isMapUnderscoreToCamelCase();
+
         /* 数据库全局配置 */
         DbConfig dbConfig = globalConfig.getDbConfig();
 
@@ -182,7 +188,7 @@ public class TableInfoHelper {
              */
             if (!isReadPK) {
                 if (existTableId) {
-                    isReadPK = initTableId(dbConfig, tableInfo, field, clazz);
+                    isReadPK = initTableId(underCamel, dbConfig, tableInfo, field, clazz);
                 } else {
                     isReadPK = initFieldId(dbConfig, tableInfo, field, clazz);
                 }
@@ -194,14 +200,14 @@ public class TableInfoHelper {
             /*
              * 字段初始化
              */
-            if (initTableField(dbConfig, tableInfo, fieldList, field, clazz)) {
+            if (initTableField(underCamel, dbConfig, tableInfo, fieldList, field, clazz)) {
                 continue;
             }
 
             /*
              * 字段, 使用 camelToUnderline 转换驼峰写法为下划线分割法, 如果已指定 TableField , 便不会执行这里
              */
-            fieldList.add(new TableFieldInfo(dbConfig, tableInfo, field));
+            fieldList.add(new TableFieldInfo(underCamel, dbConfig, tableInfo, field));
         }
 
         /* 字段列表 */
@@ -245,12 +251,14 @@ public class TableInfoHelper {
      * 主键属性初始化
      * </p>
      *
-     * @param tableInfo
-     * @param field
-     * @param clazz
+     * @param underCamel 下划线转驼峰模式
+     * @param tableInfo  表信息
+     * @param field      字段
+     * @param clazz      实体类
      * @return true 继续下一个属性判断,返回 continue;
      */
-    private static boolean initTableId(DbConfig dbConfig, TableInfo tableInfo, Field field, Class<?> clazz) {
+    private static boolean initTableId(boolean underCamel, DbConfig dbConfig, TableInfo tableInfo,
+                                       Field field, Class<?> clazz) {
         TableId tableId = field.getAnnotation(TableId.class);
         if (tableId != null) {
             if (StringUtils.isEmpty(tableInfo.getKeyColumn())) {
@@ -273,7 +281,10 @@ public class TableInfoHelper {
                     // 开启字段下划线申明
                     if (dbConfig.isColumnUnderline()) {
                         column = StringUtils.camelToUnderline(column);
-                        tableInfo.setKeyRelated(true);
+                        // 未开启下户线转驼峰 AS 转换
+                        if (!underCamel) {
+                            tableInfo.setKeyRelated(true);
+                        }
                     }
                     // 全局大写命名
                     if (dbConfig.isCapitalMode()) {
@@ -295,12 +306,13 @@ public class TableInfoHelper {
      * 主键属性初始化
      * </p>
      *
-     * @param tableInfo
-     * @param field
-     * @param clazz
+     * @param tableInfo 表信息
+     * @param field     字段
+     * @param clazz     实体类
      * @return true 继续下一个属性判断,返回 continue;
      */
-    private static boolean initFieldId(DbConfig dbConfig, TableInfo tableInfo, Field field, Class<?> clazz) {
+    private static boolean initFieldId(DbConfig dbConfig, TableInfo tableInfo,
+                                       Field field, Class<?> clazz) {
         String column = field.getName();
         if (dbConfig.isCapitalMode()) {
             column = column.toUpperCase();
@@ -335,14 +347,15 @@ public class TableInfoHelper {
      * 字段属性初始化
      * </p>
      *
-     * @param dbConfig  数据库全局配置
-     * @param tableInfo 表信息
-     * @param fieldList 字段列表
-     * @param clazz     当前表对象类
+     * @param underCamel 下划线转驼峰模式
+     * @param dbConfig   数据库全局配置
+     * @param tableInfo  表信息
+     * @param fieldList  字段列表
+     * @param clazz      当前表对象类
      * @return true 继续下一个属性判断,返回 continue;
      */
-    private static boolean initTableField(DbConfig dbConfig, TableInfo tableInfo, List<TableFieldInfo> fieldList,
-                                          Field field, Class<?> clazz) {
+    private static boolean initTableField(boolean underCamel, DbConfig dbConfig, TableInfo tableInfo,
+                                          List<TableFieldInfo> fieldList, Field field, Class<?> clazz) {
         /* 获取注解属性,自定义字段 */
         TableField tableField = field.getAnnotation(TableField.class);
         if (null == tableField) {
@@ -363,7 +376,8 @@ public class TableInfoHelper {
         String[] els = el.split(";");
         if (columns.length == els.length) {
             for (int i = 0; i < columns.length; i++) {
-                fieldList.add(new TableFieldInfo(dbConfig, tableInfo, columns[i], els[i], field, tableField));
+                fieldList.add(new TableFieldInfo(underCamel, dbConfig, tableInfo,
+                    columns[i], els[i], field, tableField));
             }
             return true;
         }

+ 3 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java

@@ -41,6 +41,9 @@ public class MybatisPlusConfig {
 //        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
 //        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
         configuration.setJdbcTypeForNull(JdbcType.NULL);
+        /**
+         * 下划线转驼峰开启
+         */
         configuration.setMapUnderscoreToCamelCase(true);
         sqlSessionFactory.setConfiguration(configuration);
         PaginationInterceptor pagination = new PaginationInterceptor();

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/entity/persistent/H2User.java

@@ -49,7 +49,7 @@ public class H2User extends SuperEntity {
     private BigDecimal price;
 
     /* 测试下划线字段命名类型, 字段填充 */
-    @TableField(value = "test_type", strategy = FieldStrategy.IGNORED)
+    @TableField(strategy = FieldStrategy.IGNORED)
     private Integer testType;
 
     private String desc;