Procházet zdrojové kódy

引入mybatisplus, 修改原有的mybatis部分代码

fangzhen před 9 měsíci
rodič
revize
4256d4626a
20 změnil soubory, kde provedl 489 přidání a 416 odebrání
  1. 7 0
      pom.xml
  2. 10 1
      ruoyi-admin/src/main/resources/application.yml
  3. 5 0
      ruoyi-common/pom.xml
  4. 6 0
      ruoyi-framework/pom.xml
  5. 0 132
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
  6. 62 0
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
  7. 6 0
      ruoyi-generator/pom.xml
  8. 24 2
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCollect.java
  9. 25 2
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityLike.java
  10. 2 1
      ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityArticleImagesMapper.java
  11. 4 1
      ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityArticleMapper.java
  12. 20 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityCollectMapper.java
  13. 25 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityLikeMapper.java
  14. 31 9
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java
  15. 2 1
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityArticleService.java
  16. 73 70
      ruoyi-generator/src/main/resources/vm/java/domain.java.vm
  17. 35 35
      ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
  18. 10 10
      ruoyi-generator/src/main/resources/vm/java/service.java.vm
  19. 88 95
      ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
  20. 54 57
      ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm

+ 7 - 0
pom.xml

@@ -31,12 +31,19 @@
         <poi.version>4.1.2</poi.version>
         <velocity.version>2.3</velocity.version>
         <jwt.version>0.9.1</jwt.version>
+        <mybatis-plus.version>3.5.2</mybatis-plus.version>
     </properties>
 
     <!-- 依赖声明 -->
     <dependencyManagement>
         <dependencies>
 
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+
             <!-- SpringFramework的依赖配置-->
             <dependency>
                 <groupId>org.springframework</groupId>

+ 10 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -98,7 +98,16 @@ token:
   expireTime: 30
 
 # MyBatis配置
-mybatis:
+#mybatis:
+#  # 搜索指定包别名
+#  typeAliasesPackage: com.ruoyi.**.domain
+#  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+#  mapperLocations: classpath*:mapper/**/*Mapper.xml
+#  # 加载全局的配置文件
+#  configLocation: classpath:mybatis/mybatis-config.xml
+
+# MyBatis Plus配置
+mybatis-plus:
   # 搜索指定包别名
   typeAliasesPackage: com.ruoyi.**.domain
   # 配置mapper的扫描,找到所有的mapper.xml映射文件

+ 5 - 0
ruoyi-common/pom.xml

@@ -124,6 +124,11 @@
             <artifactId>lombok</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 6 - 0
ruoyi-framework/pom.xml

@@ -58,6 +58,12 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-system</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.5.2</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 0 - 132
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java

@@ -1,132 +0,0 @@
-package com.ruoyi.framework.config;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import javax.sql.DataSource;
-import org.apache.ibatis.io.VFS;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
-import org.springframework.core.type.classreading.MetadataReader;
-import org.springframework.core.type.classreading.MetadataReaderFactory;
-import org.springframework.util.ClassUtils;
-import com.ruoyi.common.utils.StringUtils;
-
-/**
- * Mybatis支持*匹配扫描包
- * 
- * @author ruoyi
- */
-@Configuration
-public class MyBatisConfig
-{
-    @Autowired
-    private Environment env;
-
-    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
-
-    public static String setTypeAliasesPackage(String typeAliasesPackage)
-    {
-        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
-        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
-        List<String> allResult = new ArrayList<String>();
-        try
-        {
-            for (String aliasesPackage : typeAliasesPackage.split(","))
-            {
-                List<String> result = new ArrayList<String>();
-                aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
-                        + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
-                Resource[] resources = resolver.getResources(aliasesPackage);
-                if (resources != null && resources.length > 0)
-                {
-                    MetadataReader metadataReader = null;
-                    for (Resource resource : resources)
-                    {
-                        if (resource.isReadable())
-                        {
-                            metadataReader = metadataReaderFactory.getMetadataReader(resource);
-                            try
-                            {
-                                result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
-                            }
-                            catch (ClassNotFoundException e)
-                            {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-                }
-                if (result.size() > 0)
-                {
-                    HashSet<String> hashResult = new HashSet<String>(result);
-                    allResult.addAll(hashResult);
-                }
-            }
-            if (allResult.size() > 0)
-            {
-                typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
-            }
-            else
-            {
-                throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
-            }
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();
-        }
-        return typeAliasesPackage;
-    }
-
-    public Resource[] resolveMapperLocations(String[] mapperLocations)
-    {
-        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
-        List<Resource> resources = new ArrayList<Resource>();
-        if (mapperLocations != null)
-        {
-            for (String mapperLocation : mapperLocations)
-            {
-                try
-                {
-                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
-                    resources.addAll(Arrays.asList(mappers));
-                }
-                catch (IOException e)
-                {
-                    // ignore
-                }
-            }
-        }
-        return resources.toArray(new Resource[resources.size()]);
-    }
-
-    @Bean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
-    {
-        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
-        String mapperLocations = env.getProperty("mybatis.mapperLocations");
-        String configLocation = env.getProperty("mybatis.configLocation");
-        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
-        VFS.addImplClass(SpringBootVFS.class);
-
-        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
-        sessionFactory.setDataSource(dataSource);
-        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
-        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
-        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
-        return sessionFactory.getObject();
-    }
-}

+ 62 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java

@@ -0,0 +1,62 @@
+package com.ruoyi.framework.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
+
+/**
+ * Mybatis Plus 配置
+ *
+ * @author ruoyi
+ */
+@EnableTransactionManagement(proxyTargetClass = true)
+@Configuration
+public class MybatisPlusConfig
+{
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor()
+    {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        // 分页插件
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        // 乐观锁插件
+        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
+        // 阻断插件
+        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
+        return interceptor;
+    }
+
+    /**
+     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
+     */
+    public PaginationInnerInterceptor paginationInnerInterceptor()
+    {
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        // 设置数据库类型为mysql
+        paginationInnerInterceptor.setDbType(DbType.MYSQL);
+        // 设置最大单页限制数量,默认 500 条,-1 不受限制
+        paginationInnerInterceptor.setMaxLimit(-1L);
+        return paginationInnerInterceptor;
+    }
+
+    /**
+     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
+     */
+    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
+    {
+        return new OptimisticLockerInnerInterceptor();
+    }
+
+    /**
+     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
+     */
+    public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
+    {
+        return new BlockAttackInnerInterceptor();
+    }
+}

+ 6 - 0
ruoyi-generator/pom.xml

@@ -53,6 +53,12 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-system</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-core</artifactId>
+            <version>3.5.2</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 24 - 2
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCollect.java

@@ -6,6 +6,9 @@ import java.io.Serializable;
 
 import java.util.Date;
 
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -17,17 +20,18 @@ import lombok.NoArgsConstructor;
 * 用户文章收藏表
 * @TableName community_article_collect
 */
-@EqualsAndHashCode(callSuper = true)
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class CommunityArticleCollect extends BaseEntity implements Serializable {
+@TableName("community_article_collect")
+public class CommunityArticleCollect implements Serializable {
 
     /**
     * 收藏id
     */
     @NotNull(message="[收藏id]不能为空")
     @ApiModelProperty("收藏id")
+    @TableId("collect_id")
     private Long collectId;
     /**
     * 文章id
@@ -39,4 +43,22 @@ public class CommunityArticleCollect extends BaseEntity implements Serializable
     */
     @ApiModelProperty("用户id")
     private Long userId;
+
+    /** 创建者 */
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+    /** 更新者 */
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
 }

+ 25 - 2
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityLike.java

@@ -3,7 +3,11 @@ package com.ruoyi.generator.domain.Community;
 import javax.validation.constraints.NotNull;
 
 import java.io.Serializable;
+import java.util.Date;
 
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -15,17 +19,18 @@ import lombok.NoArgsConstructor;
 * 用户点赞文章记录
 * @TableName community_like
 */
-@EqualsAndHashCode(callSuper = true)
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class CommunityLike extends BaseEntity implements Serializable {
+@TableName("community_like")
+public class CommunityLike implements Serializable {
 
     /**
     * 唯一id
     */
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
+    @TableId("like_id")
     private Long likeId;
     /**
     * 文章id
@@ -37,4 +42,22 @@ public class CommunityLike extends BaseEntity implements Serializable {
     */
     @ApiModelProperty("用户id")
     private Long userId;
+
+    /** 创建者 */
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 更新者 */
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 }

+ 2 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityArticleImagesMapper.java

@@ -1,5 +1,6 @@
 package com.ruoyi.generator.mapper.community;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.generator.domain.Community.CommunityArticleImages;
 
 /**
@@ -8,7 +9,7 @@ import com.ruoyi.generator.domain.Community.CommunityArticleImages;
 * @createDate 2024-08-24 17:04:17
 * @Entity com.ruoyi.generator.domain.Community.CommunityArticleImages
 */
-public interface CommunityArticleImagesMapper {
+public interface CommunityArticleImagesMapper extends BaseMapper<CommunityArticleImages> {
 
     int deleteByPrimaryKey(Long id);
 

+ 4 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityArticleMapper.java

@@ -1,5 +1,6 @@
 package com.ruoyi.generator.mapper.community;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.generator.domain.Community.CommunityArticle;
 import com.ruoyi.generator.domain.Community.CommunityArticleCollect;
 import com.ruoyi.generator.domain.Community.CommunityLike;
@@ -16,7 +17,7 @@ import java.util.List;
  * @Entity com.ruoyi.generator.domain.Community.CommunityUser
  */
 @Mapper
-public interface CommunityArticleMapper {
+public interface CommunityArticleMapper extends BaseMapper<CommunityArticle> {
     /**
      * 获取文章内容首页信息
      *
@@ -45,6 +46,7 @@ public interface CommunityArticleMapper {
 
     /**
      * 新增点赞
+     *
      * @param communityLike 点赞信息
      * @return 点赞是否成功
      */
@@ -52,6 +54,7 @@ public interface CommunityArticleMapper {
 
     /**
      * 删除点赞
+     *
      * @param communityLike 点赞信息
      * @return 删除是否成功
      */

+ 20 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityCollectMapper.java

@@ -0,0 +1,20 @@
+package com.ruoyi.generator.mapper.community;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.generator.domain.Community.CommunityArticleCollect;
+import com.ruoyi.generator.domain.Community.CommunityLike;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author Administrator
+ * @description 针对表【community_article_collect(收藏表)】的数据库操作Mapper
+ * @createDate 2024-08-24 15:35:46
+ * @Entity com.ruoyi.generator.domain.Community.CommunityArticleCollect
+ */
+@Mapper
+public interface CommunityCollectMapper extends BaseMapper<CommunityArticleCollect> {
+}
+
+
+
+

+ 25 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityLikeMapper.java

@@ -0,0 +1,25 @@
+package com.ruoyi.generator.mapper.community;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.generator.domain.Community.CommunityArticle;
+import com.ruoyi.generator.domain.Community.CommunityArticleCollect;
+import com.ruoyi.generator.domain.Community.CommunityLike;
+import com.ruoyi.generator.vo.CommunityArticleVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【community_Like(点赞表)】的数据库操作Mapper
+ * @createDate 2024-08-24 15:35:46
+ * @Entity com.ruoyi.generator.domain.Community.CommunityLike
+ */
+@Mapper
+public interface CommunityLikeMapper extends BaseMapper<CommunityLike> {
+}
+
+
+
+

+ 31 - 9
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java

@@ -1,14 +1,19 @@
 package com.ruoyi.generator.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.generator.domain.Community.CommunityArticle;
 import com.ruoyi.generator.domain.Community.CommunityArticleCollect;
 import com.ruoyi.generator.domain.Community.CommunityLike;
 import com.ruoyi.generator.mapper.community.CommunityArticleMapper;
+import com.ruoyi.generator.mapper.community.CommunityCollectMapper;
+import com.ruoyi.generator.mapper.community.CommunityLikeMapper;
 import com.ruoyi.generator.vo.CommunityArticleCommentVo;
 import com.ruoyi.generator.vo.CommunityArticleVo;
 import com.ruoyi.system.mapper.SysUserMapper;
+import org.omg.CORBA.PRIVATE_MEMBER;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +28,7 @@ import java.util.Objects;
  * @author ruoyi
  */
 @Service
-public class CommunityArticleServiceImpl implements ICommunityArticleService {
+public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMapper, CommunityArticle> implements ICommunityArticleService {
     private static final Logger log = LoggerFactory.getLogger(CommunityArticleServiceImpl.class);
 
     @Autowired
@@ -32,6 +37,12 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    @Autowired
+    private CommunityLikeMapper communityLikeMapper;
+
+    @Autowired
+    private CommunityCollectMapper communityCollectMapper;
+
     /**
      * 查询文章列表
      *
@@ -54,11 +65,17 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
                 communityArticleCommentVo.setAvatar(sysUser.getAvatar());
 
                 //判断是否已收藏
-                CommunityArticleCollect collect = communityArticleMapper.selectCommunityArticleCollectById(userId, communityArticleCommentVo.getArticleId());
+                CommunityArticleCollect collect = communityCollectMapper
+                        .selectOne(new QueryWrapper<CommunityArticleCollect>()
+                                .eq("user_id", userId)
+                                .eq("article_id", communityArticleCommentVo.getArticleId()));
                 communityArticleVo.setCollect(!Objects.isNull(collect));
 
                 //判断是否已点赞
-                CommunityLike like = communityArticleMapper.selectCommunityArticleLikeById(userId, communityArticleCommentVo.getArticleId());
+                CommunityLike like = communityLikeMapper
+                        .selectOne(new QueryWrapper<CommunityLike>()
+                                .eq("user_id", userId)
+                                .eq("article_id", communityArticleCommentVo.getArticleId()));
                 communityArticleVo.setLike(!Objects.isNull(like));
             }
         }
@@ -74,7 +91,9 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public CommunityLike selectCommunityLikeById(CommunityLike communityLike) {
-        return communityArticleMapper.selectCommunityArticleLikeById(communityLike.getUserId(), communityLike.getArticleId());
+        QueryWrapper<CommunityLike> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("article_id", communityLike.getArticleId()).eq("user_id", communityLike.getUserId());
+        return communityLikeMapper.selectOne(queryWrapper);
     }
 
 
@@ -86,7 +105,7 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public boolean insertCommunityLikeById(CommunityLike communityLike) {
-        return communityArticleMapper.insertCommunityLikeById(communityLike);
+        return communityLikeMapper.insert(communityLike) > 0;
     }
 
 
@@ -98,7 +117,7 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public boolean deleteCommunityLikeById(CommunityLike communityLike) {
-        return communityArticleMapper.deleteCommunityLikeById(communityLike);
+        return communityLikeMapper.deleteById(communityLike.getLikeId()) > 0;
     }
 
 
@@ -110,7 +129,10 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public CommunityArticleCollect selectCommunityCollectById(CommunityArticleCollect collect) {
-        return communityArticleMapper.selectCommunityCollectById(collect);
+        return communityCollectMapper
+                .selectOne(new QueryWrapper<CommunityArticleCollect>()
+                        .eq("article_id", collect.getArticleId())
+                        .eq("user_id", SecurityUtils.getUserId()));
     }
 
     /**
@@ -121,7 +143,7 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public boolean insertCommunityCollectById(CommunityArticleCollect collect) {
-        return communityArticleMapper.insertCommunityCollectById(collect);
+        return communityCollectMapper.insert(collect) > 0;
     }
 
     /**
@@ -132,6 +154,6 @@ public class CommunityArticleServiceImpl implements ICommunityArticleService {
      */
     @Override
     public boolean deleteCommunityCollectById(CommunityArticleCollect collect) {
-        return communityArticleMapper.deleteCommunityCollectById(collect);
+        return communityCollectMapper.deleteById(collect) > 0;
     }
 }

+ 2 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityArticleService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.generator.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.generator.domain.Community.CommunityArticle;
 import com.ruoyi.generator.domain.Community.CommunityArticleCollect;
 import com.ruoyi.generator.domain.Community.CommunityLike;
@@ -12,7 +13,7 @@ import java.util.List;
  *
  * @author ruoyi
  */
-public interface ICommunityArticleService {
+public interface ICommunityArticleService extends IService<CommunityArticle> {
     /**
      * 查询文章列表
      *

+ 73 - 70
ruoyi-generator/src/main/resources/vm/java/domain.java.vm

@@ -3,103 +3,106 @@ package ${packageName}.domain;
 #foreach ($import in $importList)
 import ${import};
 #end
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
+import com.rchuing.sis.common.annotation.Excel;
 #if($table.crud || $table.sub)
-import com.ruoyi.common.core.domain.BaseEntity;
+import com.rchuing.sis.common.core.domain.BaseEntity;
 #elseif($table.tree)
-import com.ruoyi.common.core.domain.TreeEntity;
+import com.fenghuang.common.core.domain.TreeEntity;
 #end
 
 /**
  * ${functionName}对象 ${tableName}
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
 #if($table.crud || $table.sub)
-#set($Entity="BaseEntity")
+    #set($Entity="BaseEntity")
 #elseif($table.tree)
-#set($Entity="TreeEntity")
+    #set($Entity="TreeEntity")
 #end
+@TableName(resultMap = "${packageName}.mapper.${ClassName}Mapper.${ClassName}Result")
 public class ${ClassName} extends ${Entity}
-{
-    private static final long serialVersionUID = 1L;
+        {
+private static final long serialVersionUID = 1L;
 
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-    /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
-    @Excel(name = "${comment}")
-#end
-#end
-    private $column.javaType $column.javaField;
+    #foreach ($column in $columns)
+        #if(!$table.isSuperColumn($column.javaField))
+        /** $column.columnComment */
+            #if($column.list)
+                #set($parentheseIndex=$column.columnComment.indexOf("("))
+                #if($parentheseIndex != -1)
+                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
+                #else
+                    #set($comment=$column.columnComment)
+                #end
+                #if($parentheseIndex != -1)
+                @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+                #elseif($column.javaType == 'Date')
+                @JsonFormat(pattern = "yyyy-MM-dd")
+                @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+                #else
+                @Excel(name = "${comment}")
+                #end
+            #end
+            #if($column.isPk == 1)
+            @TableId(value = "$column.columnName", type = IdType.AUTO)
+            #end
+        private $column.javaType $column.javaField;
 
-#end
-#end
-#if($table.sub)
+        #end
+    #end
+    #if($table.sub)
     /** $table.subTable.functionName信息 */
     private List<${subClassName}> ${subclassName}List;
 
-#end
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
+    #end
+    #foreach ($column in $columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                #set($AttrName=$column.javaField)
+            #else
+                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+            #end
+        public void set${AttrName}($column.javaType $column.javaField) {
+            this.$column.javaField = $column.javaField;
+        }
 
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
+        public $column.javaType get${AttrName}() {
+            return $column.javaField;
+        }
+        #end
+    #end
 
-#if($table.sub)
-    public List<${subClassName}> get${subClassName}List()
-    {
+    #if($table.sub)
+    public List<${subClassName}> get${subClassName}List() {
         return ${subclassName}List;
     }
 
-    public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
-    {
+    public void set${subClassName}List(List<${subClassName}> ${subclassName}List) {
         this.${subclassName}List = ${subclassName}List;
     }
 
-#end
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-            .append("${column.javaField}", get${AttrName}())
-#end
-#if($table.sub)
-            .append("${subclassName}List", get${subClassName}List())
-#end
+    #end
+@Override
+public String toString() {
+    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+        #foreach ($column in $columns)
+            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                #set($AttrName=$column.javaField)
+            #else
+                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+            #end
+        .append("${column.javaField}", get${AttrName}())
+        #end
+        #if($table.sub)
+                .append("${subclassName}List", get${subClassName}List())
+                #end
             .toString();
-    }
 }
+        }

+ 35 - 35
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm

@@ -1,6 +1,7 @@
 package ${packageName}.mapper;
 
 import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import ${packageName}.domain.${ClassName};
 #if($table.sub)
 import ${packageName}.domain.${subClassName};
@@ -8,15 +9,14 @@ import ${packageName}.domain.${subClassName};
 
 /**
  * ${functionName}Mapper接口
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public interface ${ClassName}Mapper 
-{
+public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
@@ -24,7 +24,7 @@ public interface ${ClassName}Mapper
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
@@ -32,7 +32,7 @@ public interface ${ClassName}Mapper
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -40,7 +40,7 @@ public interface ${ClassName}Mapper
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -48,7 +48,7 @@ public interface ${ClassName}Mapper
 
     /**
      * 删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
@@ -56,36 +56,36 @@ public interface ${ClassName}Mapper
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的数据主键集合
      * @return 结果
      */
     public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-#if($table.sub)
+    #if($table.sub)
 
-    /**
-     * 批量删除${subTable.functionName}
-     * 
-     * @param ${pkColumn.javaField}s 需要删除的数据主键集合
-     * @return 结果
-     */
-    public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-    
-    /**
-     * 批量新增${subTable.functionName}
-     * 
-     * @param ${subclassName}List ${subTable.functionName}列表
-     * @return 结果
-     */
-    public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
-    
+        /**
+         * 批量删除${subTable.functionName}
+         *
+         * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+         * @return 结果
+         */
+        public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
 
-    /**
-     * 通过${functionName}主键删除${subTable.functionName}信息
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return 结果
-     */
-    public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
-#end
-}
+        /**
+         * 批量新增${subTable.functionName}
+         *
+         * @param ${subclassName}List ${subTable.functionName}列表
+         * @return 结果
+         */
+        public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
+
+
+        /**
+         * 通过${functionName}主键删除${subTable.functionName}信息
+         *
+         * @param ${pkColumn.javaField} ${functionName}ID
+         * @return 结果
+         */
+        public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
+    #end
+}

+ 10 - 10
ruoyi-generator/src/main/resources/vm/java/service.java.vm

@@ -2,18 +2,18 @@ package ${packageName}.service;
 
 import java.util.List;
 import ${packageName}.domain.${ClassName};
+import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * ${functionName}Service接口
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public interface I${ClassName}Service 
-{
+public interface I${ClassName}Service extends IService<${ClassName}> {
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
@@ -21,7 +21,7 @@ public interface I${ClassName}Service
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
@@ -29,7 +29,7 @@ public interface I${ClassName}Service
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -37,7 +37,7 @@ public interface I${ClassName}Service
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -45,7 +45,7 @@ public interface I${ClassName}Service
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
      * @return 结果
      */
@@ -53,9 +53,9 @@ public interface I${ClassName}Service
 
     /**
      * 删除${functionName}信息
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
     public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
-}
+}

+ 88 - 95
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm

@@ -1,169 +1,162 @@
 package ${packageName}.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import java.util.List;
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
-import com.ruoyi.common.utils.DateUtils;
-#break
-#end
-#end
+    #foreach ($column in $columns)
+        #if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
+        import com.rchuing.common.utils.DateUtils;
+            #break
+        #end
+    #end
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-#if($table.sub)
-import java.util.ArrayList;
-import com.ruoyi.common.utils.StringUtils;
-import org.springframework.transaction.annotation.Transactional;
-import ${packageName}.domain.${subClassName};
-#end
+    #if($table.sub)
+    import java.util.ArrayList;
+    import com.rchuing.common.utils.StringUtils;
+    import org.springframework.transaction.annotation.Transactional;
+    import ${packageName}.domain.${subClassName};
+    #end
 import ${packageName}.mapper.${ClassName}Mapper;
 import ${packageName}.domain.${ClassName};
 import ${packageName}.service.I${ClassName}Service;
 
 /**
  * ${functionName}Service业务层处理
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
 @Service
-public class ${ClassName}ServiceImpl implements I${ClassName}Service 
-{
+public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
     @Autowired
     private ${ClassName}Mapper ${className}Mapper;
 
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
     @Override
-    public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
-    {
+    public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
         return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}
      */
     @Override
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
-    {
+    public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) {
         return ${className}Mapper.select${ClassName}List(${className});
     }
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int insert${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime')
-        ${className}.setCreateTime(DateUtils.getNowDate());
-#end
-#end
-#if($table.sub)
-        int rows = ${className}Mapper.insert${ClassName}(${className});
-        insert${subClassName}(${className});
-        return rows;
-#else
-        return ${className}Mapper.insert${ClassName}(${className});
-#end
+    public int insert${ClassName}(${ClassName} ${className}) {
+        #foreach ($column in $columns)
+            #if($column.javaField == 'createTime')
+                ${className}.setCreateTime(DateUtils.getNowDate());
+            #end
+        #end
+        #if($table.sub)
+            int rows = ${className}Mapper.insert${ClassName}(${className});
+            insert${subClassName}(${className});
+            return rows;
+        #else
+            return ${className}Mapper.insert${ClassName}(${className});
+        #end
     }
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int update${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'updateTime')
-        ${className}.setUpdateTime(DateUtils.getNowDate());
-#end
-#end
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
-        insert${subClassName}(${className});
-#end
+    public int update${ClassName}(${ClassName} ${className}) {
+        #foreach ($column in $columns)
+            #if($column.javaField == 'updateTime')
+                ${className}.setUpdateTime(DateUtils.getNowDate());
+            #end
+        #end
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
+            insert${subClassName}(${className});
+        #end
         return ${className}Mapper.update${ClassName}(${className});
     }
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
-    {
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
-#end
+    public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) {
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
+        #end
         return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
     }
 
     /**
      * 删除${functionName}信息
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
-    {
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
-#end
+    public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
+        #end
         return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
-#if($table.sub)
+    #if($table.sub)
 
-    /**
-     * 新增${subTable.functionName}信息
-     * 
-     * @param ${className} ${functionName}对象
-     */
-    public void insert${subClassName}(${ClassName} ${className})
-    {
-        List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
-        ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
-        if (StringUtils.isNotNull(${subclassName}List))
-        {
-            List<${subClassName}> list = new ArrayList<${subClassName}>();
-            for (${subClassName} ${subclassName} : ${subclassName}List)
+        /**
+         * 新增${subTable.functionName}信息
+         *
+         * @param ${className} ${functionName}对象
+         */
+        public void insert${subClassName}(${ClassName} ${className}) {
+            List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
+            ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
+            if (StringUtils.isNotNull(${subclassName}List))
             {
-                ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
-                list.add(${subclassName});
-            }
-            if (list.size() > 0)
-            {
-                ${className}Mapper.batch${subClassName}(list);
+                List<${subClassName}> list = new ArrayList<${subClassName}>();
+                for (${subClassName} ${subclassName} : ${subclassName}List)
+                {
+                    ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
+                    list.add(${subclassName});
+                }
+                if (list.size() > 0)
+                {
+                        ${className}Mapper.batch${subClassName}(list);
+                }
             }
         }
-    }
-#end
-}
+    #end
+}

+ 54 - 57
ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm

@@ -1,76 +1,73 @@
 package ${packageName}.domain;
 
-#foreach ($import in $subImportList)
-import ${import};
-#end
+    #foreach ($import in $subImportList)
+    import ${import};
+    #end
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
+import com.rchuing.common.annotation.Excel;
+import com.rchuing.common.core.domain.BaseEntity;
 
 /**
  * ${subTable.functionName}对象 ${subTableName}
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public class ${subClassName} extends BaseEntity
-{
+public class ${subClassName} extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
-    /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
-    @Excel(name = "${comment}")
-#end
-#end
-    private $column.javaType $column.javaField;
+    #foreach ($column in $subTable.columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            /** $column.columnComment */
+            #if($column.list)
+                #set($parentheseIndex=$column.columnComment.indexOf("("))
+                #if($parentheseIndex != -1)
+                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
+                #else
+                    #set($comment=$column.columnComment)
+                #end
+                #if($parentheseIndex != -1)
+                @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+                #elseif($column.javaType == 'Date')
+                @JsonFormat(pattern = "yyyy-MM-dd")
+                @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+                #else
+                @Excel(name = "${comment}")
+                #end
+            #end
+        private $column.javaType $column.javaField;
 
-#end
-#end
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
+        #end
+    #end
+    #foreach ($column in $subTable.columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                #set($AttrName=$column.javaField)
+            #else
+                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+            #end
+            public void set${AttrName}($column.javaType $column.javaField) {
+            this.$column.javaField = $column.javaField;
+        }
 
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
+    public $column.javaType get${AttrName}() {
+            return $column.javaField;
+        }
+        #end
+    #end
 
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $subTable.columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-            .append("${column.javaField}", get${AttrName}())
-#end
-            .toString();
+            #foreach ($column in $subTable.columns)
+                #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                    #set($AttrName=$column.javaField)
+                #else
+                    #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+                #end
+                    .append("${column.javaField}", get${AttrName}())
+                    #end
+                .toString();
     }
-}
+}