zhouhao 7 years ago
parent
commit
1a29ebf122

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

@@ -24,6 +24,7 @@ import org.apache.ibatis.mapping.ResultMap;
 import org.apache.ibatis.mapping.ResultMapping;
 import org.hswebframework.ezorm.core.ValueConverter;
 import org.hswebframework.ezorm.core.param.*;
+import org.hswebframework.ezorm.rdb.meta.Correlation;
 import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData;
 import org.hswebframework.ezorm.rdb.meta.RDBDatabaseMetaData;
 import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData;
@@ -184,14 +185,7 @@ public class EasyOrmSqlBuilder {
         resultMappings.addAll(resultMaps.getIdResultMappings());
         resultMappings.forEach(resultMapping -> {
             if (resultMapping.getNestedQueryId() == null) {
-                RDBColumnMetaData column = new RDBColumnMetaData() {
-                    @Override
-                    public RDBColumnMetaData clone() {
-                        RDBColumnMetaData target = super.clone();
-                        target.setValueConverter(getValueConverter());
-                        return target;
-                    }
-                };
+                RDBColumnMetaData column = new RDBColumnMetaData();
                 column.setJdbcType(JDBCType.valueOf(resultMapping.getJdbcType().name()));
                 column.setName(resultMapping.getColumn());
                 if (!StringUtils.isNullOrEmpty(resultMapping.getProperty())) {
@@ -275,7 +269,7 @@ public class EasyOrmSqlBuilder {
         if (!appender.isEmpty()) {
             appender.removeFirst();
         } else {
-            throw new UnsupportedOperationException("{no_columns_will_be_update}");
+            throw new UnsupportedOperationException("没有列被修改");
         }
         return appender.toString();
     }
@@ -309,7 +303,6 @@ public class EasyOrmSqlBuilder {
         SqlRender<UpdateParam> render = tableMetaData.getDatabaseMetaData().getRenderer(SqlRender.TYPE.UPDATE);
         return render.render(tableMetaData, param).getSql();
     }
-
     public String buildSelectFields(String resultMapId, String tableName, Object arg) {
         QueryParam param = null;
         if (arg instanceof QueryParam) {

+ 13 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/NestEntity.java

@@ -0,0 +1,13 @@
+package org.hswebframework.web.dao.crud;
+
+import lombok.Data;
+
+/**
+ *
+ * @author zhouhao
+ * @since
+ */
+@Data
+public class NestEntity {
+    private String name;
+}

+ 7 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestCrud.java

@@ -37,6 +37,11 @@ public class TestCrud extends AbstractTransactionalJUnit4SpringContextTests {
                 "  data_type SMALLINT,\n" +
                 "  data_types BIGINT\n" +
                 ")");
+        sqlExecutor.exec("\n" +
+                "create table h_nest_table(\n" +
+                "  id BIGINT AUTO_INCREMENT PRIMARY KEY,\n" +
+                "  name VARCHAR(32)\n" +
+                ")");
     }
 
     @Test
@@ -52,8 +57,8 @@ public class TestCrud extends AbstractTransactionalJUnit4SpringContextTests {
         QueryParamEntity query = new QueryParamEntity();
         //any in
         query.where("dataTypes",  Arrays.asList(DataType.TYPE3, DataType.TYPE1));
-
-        List<TestEntity> entities = testDao.query(query);
+        query.includes("nest.name","*");
+        List<TestEntity> entities = testDao.queryNest(query);
 
 //        testDao.query(entity);
 

+ 7 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestDao.java

@@ -1,6 +1,13 @@
 package org.hswebframework.web.dao.crud;
 
+import org.hswebframework.web.commons.entity.Entity;
 import org.hswebframework.web.dao.CrudDao;
 
+import java.util.List;
+
 public interface TestDao extends CrudDao<TestEntity, Long> {
+    List<TestEntity> queryNest(Entity queryEntity);
+
+    int countNest(Entity queryEntity);
+
 }

+ 2 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestEntity.java

@@ -43,4 +43,6 @@ public class TestEntity implements org.hswebframework.web.commons.entity.Entity
             columnDefinition = "bigint COMMENT '多个类型'"
     )
     private DataType[] dataTypes;
+
+    private NestEntity nest;
 }

+ 30 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/resources/org/hswebframework/web/dao/test/TestDao.xml

@@ -4,6 +4,12 @@
 
     <resultMap id="TestResultMap" type="org.hswebframework.web.dao.crud.TestEntity">
         <id property="id" column="id" javaType="Long" jdbcType="INTEGER"/>
+
+    </resultMap>
+
+    <resultMap id="TestNestResultMap" type="org.hswebframework.web.dao.crud.TestEntity">
+        <id property="id" column="id" javaType="Long" jdbcType="INTEGER"/>
+        <result property="nest.name" column="nest_table.name" javaType="String" jdbcType="VARCHAR"/>
     </resultMap>
 
     <!--用于动态生成sql所需的配置-->
@@ -32,4 +38,28 @@
         <include refid="BasicMapper.buildTotalSql"/>
     </select>
 
+    <select id="queryNest" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="TestNestResultMap">
+        <bind name="tableName" value="'h_test'"/>
+        <bind name="resultMapId" value="'TestNestResultMap'"/>
+        select
+        <include refid="BasicMapper.buildSelectField"/>
+        from h_test
+        left join h_nest_table nest_table on nest_table.id=h_test.id
+        <where>
+            <include refid="BasicMapper.buildWhere"/>
+        </where>
+        <include refid="BasicMapper.buildSortField"/>
+    </select>
+
+    <select id="countNest" parameterType="org.hswebframework.web.commons.entity.Entity" resultType="int">
+        <include refid="config"/>
+        select
+        count(1)
+        from h_test
+        left join h_nest_table nest_table on nest_table.id=h_test.id
+        <where>
+            <include refid="BasicMapper.buildWhere"/>
+        </where>
+    </select>
+
 </mapper>

+ 3 - 2
hsweb-system/hsweb-system-dev-tools/src/main/java/org/hswebframework/web/dev/tools/writer/DefaultCodeWriter.java

@@ -21,12 +21,13 @@ public class DefaultCodeWriter implements CodeWriter {
         File file = new File(path);
         file.mkdir();
         String type = code.getType();
+        String filePath = code.getFile().startsWith("/") ? code.getFile() : path + "/" + code.getFile();
         if ("dir".equals(type)) {
             code.getChildren()
-                    .forEach(childrenCode -> writeCode(path + "/" + code.getFile(), childrenCode));
+                    .forEach(childrenCode -> writeCode(filePath, childrenCode));
         } else if ("file".equals(type)) {
             String template = code.getTemplate();
-            String fileName = path + "/" + code.getFile();
+            String fileName = filePath;
             String replaceMod = code.getRepeat();
             File codeFile = new File(fileName);
             if (codeFile.exists() && replaceMod != null && !fileName.endsWith(".java")) {