MyBatisPlusの效率与提升

打印 上一主题 下一主题

主题 1018|帖子 1018|积分 3054

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pom.xml
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <parent>
  6.     </parent>
  7.     <modelVersion>4.0.0</modelVersion>
  8.     <dependencies>
  9.         <dependency>
  10.             <groupId>com.baomidou</groupId>
  11.             <artifactId>mybatis-plus-boot-starter</artifactId>
  12.             <version>3.4.3.4</version>
  13.             <optional>true</optional>
  14.         </dependency>
  15.     </dependencies>
  16. </project>
复制代码
  1. application.yml
复制代码
  1. # MyBatis配置
  2. mybatis:
  3.   # 搜索指定包别名
  4.   typeAliasesPackage: com.XX.**.domain.**
  5.   # 配置mapper的扫描,找到所有的mapper.xml映射文件
  6.   mapperLocations: classpath*:mapper/**/*Mapper.xml
  7.   # 加载全局的配置文件
  8.   configLocation: classpath:mybatis/mybatis-config.xml
复制代码
mybatisplus设置类
  1. package com.example.config;
  2. import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
  3. import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. /**
  7. * User: Administrator
  8. * Date: 2020/4/7
  9. * Time: 16:00
  10. * Desc:
  11. */
  12. @Configuration
  13. public class MybatisPlusConfig {
  14.     /**
  15.      * mybatis-plus SQL执行效率插件【生产环境可以关闭】
  16.      */
  17.     @Bean
  18.     public PerformanceInterceptor performanceInterceptor() {
  19.         return new PerformanceInterceptor();
  20.     }
  21.     /**
  22.      * 分页插件
  23.      */
  24.     @Bean
  25.     public PaginationInterceptor paginationInterceptor() {
  26.         return new PaginationInterceptor();
  27.     }
  28. }
复制代码
model
  1. import com.baomidou.mybatisplus.annotation.TableName;
  2. import com.wgh.common.core.domain.BaseEntity;
  3. import lombok.Data;
  4. import lombok.EqualsAndHashCode;
  5. import java.util.Date;
  6. @EqualsAndHashCode(callSuper = true)
  7. @Data
  8. @TableName("task_management")
  9. public class TaskManagement extends BaseEntity {
  10.     private Long id;
  11.     private String taskName;
  12.     private String taskGroupName = "default";
  13.     /**
  14.      * 执行周期 不为空则按照周期执行
  15.      */
  16.     private String cron;
  17.     private Integer taskFlag = 0; // 启用 1 /停用 0
  18.     private Integer taskStatus; // 成功 1 | 未执行 0 | 失败 2
  19.     private String taskFlowJson;
  20. }
复制代码
dao
  1. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  2. import com.wgh.web.domain.taskManagement.TaskManagement;
  3. public interface TaskManagementMapper extends BaseMapper<TaskManagement> {
  4. }
复制代码
  1. [/code]service
  2. [code]import com.wgh.web.domain.taskManagement.TaskManagement;
  3. import com.baomidou.mybatisplus.extension.service.IService;
  4. import java.util.List;
  5. public interface ITaskManagementService extends IService<TaskManagement> {
  6.     /**
  7.      * 列表查找
  8.      *
  9.      * @param object 查询参数
  10.      * @return 返回列表
  11.      */
  12.     List<TaskManagement> getList(TaskManagement object);
  13.     /**
  14.      * 修改停用启用状态
  15.      *
  16.      * @param id 任务ID
  17.      * @return 0|修改失败 1|修改成功
  18.      */
  19.     int modifyTaskFlag(Long id);
  20. }
复制代码
  1. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.wgh.common.utils.SecurityUtils;
  4. import com.wgh.web.domain.taskManagement.TaskManagement;
  5. import com.wgh.web.mapper.taskManagement.TaskManagementMapper;
  6. import com.wgh.web.service.taskManagement.ITaskManagementService;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import javax.annotation.Resource;
  12. import java.util.ArrayList;
  13. import java.util.Date;
  14. import java.util.List;
  15. @Service
  16. public class TaskManagementServiceImpl extends ServiceImpl<TaskManagementMapper, TaskManagement> implements ITaskManagementService {
  17.     private static final Logger log = LoggerFactory.getLogger(TaskManagementServiceImpl.class);
  18.     @Resource
  19.     private TaskManagementMapper taskManagementMapper;
  20.     /**
  21.      * 列表查找
  22.      *
  23.      * @param object 查询参数
  24.      * @return 返回列表
  25.      */
  26.     @Override
  27.     public List<TaskManagement> getList(TaskManagement object) {
  28.         QueryWrapper<TaskManagement> queryWrapper = new QueryWrapper<>();
  29.         return taskManagementMapper.selectList(queryWrapper);
  30.     }
  31.     /**
  32.      * 修改停用启用状态
  33.      *
  34.      * @param id 任务ID
  35.      * @return 0|修改失败 1|修改成功
  36.      */
  37.     @Override
  38.     @Transactional
  39.     public int modifyTaskFlag(Long id) {
  40.         TaskManagement tmp = this.baseMapper.selectById(id);
  41.         return this.baseMapper.updateById(tmp);
  42.     }
  43. }
复制代码
  1. MyBatisConfig
复制代码
  1. package com.wgh.framework.config;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.HashSet;
  6. import java.util.List;
  7. import javax.sql.DataSource;
  8. import org.apache.ibatis.io.VFS;
  9. import org.apache.ibatis.session.SqlSessionFactory;
  10. import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
  11. import org.mybatis.spring.SqlSessionFactoryBean;
  12. import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.context.annotation.Bean;
  15. import org.springframework.context.annotation.Configuration;
  16. import org.springframework.core.env.Environment;
  17. import org.springframework.core.io.DefaultResourceLoader;
  18. import org.springframework.core.io.Resource;
  19. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  20. import org.springframework.core.io.support.ResourcePatternResolver;
  21. import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
  22. import org.springframework.core.type.classreading.MetadataReader;
  23. import org.springframework.core.type.classreading.MetadataReaderFactory;
  24. import org.springframework.util.ClassUtils;
  25. import com.wgh.common.utils.StringUtils;
  26. /**
  27. * Mybatis支持*匹配扫描包
  28. *
  29. * @author maj
  30. */
  31. @Configuration
  32. public class MyBatisConfig
  33. {
  34.     @Autowired
  35.     private Environment env;
  36.     static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
  37.     public static String setTypeAliasesPackage(String typeAliasesPackage)
  38.     {
  39.         ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
  40.         MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
  41.         List<String> allResult = new ArrayList<String>();
  42.         try
  43.         {
  44.             for (String aliasesPackage : typeAliasesPackage.split(","))
  45.             {
  46.                 List<String> result = new ArrayList<String>();
  47.                 aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
  48.                         + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
  49.                 Resource[] resources = resolver.getResources(aliasesPackage);
  50.                 if (resources != null && resources.length > 0)
  51.                 {
  52.                     MetadataReader metadataReader = null;
  53.                     for (Resource resource : resources)
  54.                     {
  55.                         if (resource.isReadable())
  56.                         {
  57.                             metadataReader = metadataReaderFactory.getMetadataReader(resource);
  58.                             try
  59.                             {
  60.                                 result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
  61.                             }
  62.                             catch (ClassNotFoundException e)
  63.                             {
  64.                                 e.printStackTrace();
  65.                             }
  66.                         }
  67.                     }
  68.                 }
  69.                 if (result.size() > 0)
  70.                 {
  71.                     HashSet<String> hashResult = new HashSet<String>(result);
  72.                     allResult.addAll(hashResult);
  73.                 }
  74.             }
  75.             if (allResult.size() > 0)
  76.             {
  77.                 typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
  78.             }
  79.             else
  80.             {
  81.                 throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
  82.             }
  83.         }
  84.         catch (IOException e)
  85.         {
  86.             e.printStackTrace();
  87.         }
  88.         return typeAliasesPackage;
  89.     }
  90.     public Resource[] resolveMapperLocations(String[] mapperLocations)
  91.     {
  92.         ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
  93.         List<Resource> resources = new ArrayList<Resource>();
  94.         if (mapperLocations != null)
  95.         {
  96.             for (String mapperLocation : mapperLocations)
  97.             {
  98.                 try
  99.                 {
  100.                     Resource[] mappers = resourceResolver.getResources(mapperLocation);
  101.                     resources.addAll(Arrays.asList(mappers));
  102.                 }
  103.                 catch (IOException e)
  104.                 {
  105.                     // ignore
  106.                 }
  107.             }
  108.         }
  109.         return resources.toArray(new Resource[resources.size()]);
  110.     }
  111.     @Bean
  112.     public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
  113.     {
  114.         String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
  115.         String mapperLocations = env.getProperty("mybatis.mapperLocations");
  116.         String configLocation = env.getProperty("mybatis.configLocation");
  117.         typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
  118.         VFS.addImplClass(SpringBootVFS.class);
  119.         final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
  120.         sessionFactory.setDataSource(dataSource);
  121.         sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
  122.         sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
  123.         sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
  124.         return sessionFactory.getObject();
  125.     }
  126. }
复制代码
 
注意事项:必须使用 com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean 去更换 mybatis 的 SqlSessionFactoryBean (org.mybatis.spring.SqlSessionFactoryBean) 方才能完成对XML等默认SQL的添加处理

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表