zhouhao преди 7 години
родител
ревизия
4b595d6230

+ 5 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MyBatisAutoConfiguration.java

@@ -43,7 +43,6 @@ import org.springframework.core.io.DefaultResourceLoader;
 import org.springframework.core.io.ResourceLoader;
 import org.springframework.util.StringUtils;
 
-import javax.annotation.Resource;
 import javax.sql.DataSource;
 
 @Configuration
@@ -112,7 +111,11 @@ public class MyBatisAutoConfiguration {
         factory.setMapperLocations(mybatisProperties.resolveMapperLocations());
         SqlSessionFactory sqlSessionFactory = factory.getObject();
         ResultMapsUtils.setSqlSession(sqlSessionFactory);
-        EasyOrmSqlBuilder.getInstance().useJpa = mybatisProperties.isUseJpa();
+        try {
+            Class.forName("javax.persistence.Table");
+            EasyOrmSqlBuilder.getInstance().useJpa = mybatisProperties.isUseJpa();
+        } catch (@SuppressWarnings("all") Exception ignore) {
+        }
         EasyOrmSqlBuilder.getInstance().entityFactory = entityFactory;
         return sqlSessionFactory;
     }

+ 1 - 3
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MybatisProperties.java

@@ -59,9 +59,7 @@ public class MybatisProperties extends org.mybatis.spring.boot.autoconfigure.Myb
     /**
      * 使用jpa注解来解析表结构,动态生成查询条件
      */
-    private              boolean  useJpa                 = false;
-
-    private Properties                  mybatisProperties;
+    private              boolean  useJpa                 = true;
 
     private List<MybatisMapperCustomer> mybatisMappers;
 

+ 5 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/builder/EasyOrmSqlBuilder.java

@@ -194,7 +194,8 @@ public class EasyOrmSqlBuilder {
             if (parseResult != null) {
                 for (RDBColumnMetaData columnMetaData : parseResult.getColumns()) {
                     if (rdbTableMetaData.findColumn(columnMetaData.getName()) == null) {
-                        columnMetaData=columnMetaData.clone();
+                        columnMetaData = columnMetaData.clone();
+                        columnMetaData.setProperty("fromJpa", true);
                         rdbTableMetaData.addColumn(columnMetaData);
                     }
                 }
@@ -296,10 +297,12 @@ public class EasyOrmSqlBuilder {
             if (!cname.contains(".")) {
                 cname = tableName.concat(".").concat(cname);
             }
+            boolean isJpa = columnMetaData.getProperty("fromJpa", false).isTrue();
+
             appender.add(",", encodeColumn(dialect, cname)
                     , " AS "
                     , dialect.getQuoteStart()
-                    , columnMetaData.getName()
+                    , isJpa ? columnMetaData.getAlias() : columnMetaData.getName()
                     , dialect.getQuoteEnd());
         });
         param.getIncludes().remove("*");

+ 22 - 1
hsweb-examples/hsweb-examples-custom-entity/README.md

@@ -65,7 +65,7 @@ public class CustomOrganizationalEntity extends SimpleOrganizationalEntity {
 将新的实体类提供给hsweb有3种方式,第一种:jdk的serviceLoader;第二种:application.yml配置;
 第三种:java类方式配置,选择其中一种即可.
 
-serviceLoader
+serviceLoader方式:
 
 创建文件:`META-INF/services/org.hswebframework.web.entity.organizational.OrganizationalEntity`
 内容:
@@ -211,3 +211,24 @@ public class CustomMybatisMapperCustomer implements MybatisMapperCustomer {
     }
 }
 ```
+
+5. 使用jpa注解方式拓展字段
+依赖jpa-api:
+```xml
+<dependency>
+    <groupId>org.hibernate.javax.persistence</groupId>
+    <artifactId>hibernate-jpa-2.0-api</artifactId>
+    <version>1.0.1.Final</version>
+</dependency>
+```
+
+在拓展的实体类中使用jpa注解:
+```java
+    @Data
+    @Table //此处设置表名是无效的,仅作为一个解析标识
+    public class CustomUserEntity extends SimpleBindRoleUserEntity {
+        @Column(name = "nick_name")
+        private String nickName;
+    }
+```
+注意: 暂时只支持简单的属性。不支持表关联

+ 0 - 1
hsweb-examples/hsweb-examples-custom-entity/pom.xml

@@ -74,7 +74,6 @@
             <groupId>org.hibernate.javax.persistence</groupId>
             <artifactId>hibernate-jpa-2.0-api</artifactId>
             <version>1.0.1.Final</version>
-            <optional>true</optional>
         </dependency>
     </dependencies>
 </project>

+ 1 - 5
hsweb-examples/hsweb-examples-custom-entity/src/main/resources/application.yml

@@ -24,8 +24,4 @@ hsweb:
 #            mapping:
 #                OrganizationalEntity: CustomOrganizationalEntity
 server:
-  port: 8081
-mybatis:
-  use-jpa: true
-  configuration:
-    mapUnderscoreToCamelCase: true
+  port: 8081