zoukankan      html  css  js  c++  java
  • SpringBoot(一) ---- SpringBoot集成MybatisPlus

    一、创建SpringBoot项目

      1.访问https://start.spring.io/创建SpringBoot项目

      2.创建时依赖SpringWeb

      3.resources目录下创建application.yml文件,配置基本参数

    server:
      port: 8080
    spring:
      profiles.include: dev

      4.创建application-dev.yml文件

    二、集成Mybatis

      1.添加Mybatis的Starter依赖

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </dependency>        

      2.application-dev.yml文件下配置数据源等参数

    spring:
      datasource:
        url: jdbc:postgresql://rds.amazonaws.com:5432/bank
        username: postgres
        password: password
    mybatis:
      mapper-locations: classpath:com/bank/mapper/xml/*.xml
      configuration:
        map-underscore-to-camel-case: true
    logging:
    level:
    root: info
    com:
        bank:
    mapper: DEBUG

      3.启动类加入Mapper类扫描注解

    @MapperScan("com.bank.mapper")

    三、集成MybatisPlus

      1.添加MybatisPlus依赖

         <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>2.2</version>
            </dependency>

    四、使用MybatisPlus

      1.代码生成

        创建如下代码生成类,运行后生成代码

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.apache.commons.lang3.StringUtils;
    
    import java.util.Scanner;
    
    /**
     * @Author neikou
     * @Date 2021/04/27
     **/
    public class CodeGenerator {
    
    
        public static void main(String[] args) {
    
    
    
    
            // 1、创建代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 2、全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor(scanner("author"));
            gc.setOpen(false); //生成后是否打开资源管理器
            gc.setFileOverride(true); //重新生成时文件是否覆盖
            gc.setServiceName("%sService");    //去掉Service接口的首字母I
            gc.setIdType(IdType.AUTO); //主键策略
            gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
            gc.setSwagger2(false);//开启Swagger2模式
            mpg.setGlobalConfig(gc);
    
            // 3、数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:postgresql://rds.amazonaws.com:5432/bank");
            dsc.setDriverName("org.postgresql.Driver");
            dsc.setUsername("postgres");
            dsc.setPassword("password");
            dsc.setDbType(DbType.POSTGRE_SQL);
            mpg.setDataSource(dsc);
    
            // 4、包配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName(null); //模块名
            pc.setParent("com.toa.toabank");
            pc.setController("controller");
            pc.setEntity("entity");
            pc.setService("service");
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
    
    
            // 5、策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setInclude(scanner("tableName"));//对一张表生成代码
            strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
            strategy.setTablePrefix("PTP_"); //生成实体时去掉表前缀
            strategy.setEntityTableFieldAnnotationEnable(true);//生成字段注解
    
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
            strategy.setEntityLombokModel(false); // lombok 模型 @Accessors(chain = true) setter链式操作
            strategy.setChainModel(true);
    
            strategy.setRestControllerStyle(true); //restful api风格控制器
            strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
            strategy.setVersionFieldName("version");
    mpg.setStrategy(strategy);
    // mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } /** * <p> * 读取控制台内容 * </p> */ public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("请输入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotBlank(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } }

      2.乐观锁

        2.1在实体中为版本锁字段加入@Version注解(代码生成时可以在Strategy配置中使用setVersionFieldName设置自动生成);

        2.2在配置类中托管拦截器

    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @Author neikou
     * @Date 2021/04/28
     **/
    @Configuration
    public class MybatisPlusInterceptorConfig {
    
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
            return interceptor;
        }
    }

        注:

          支持的数据类型:int,Integer,long,Long,Date,Timestamp,LocalDateTime

          仅支持 updateById(id) 与 update(entity, wrapper) 方法

      3.分页

        3.1在配置类中托管拦截器

    /**
     * @Author neikou
     * @Date 2021/04/28
     **/
    @Configuration
    public class MybatisPlusInterceptorConfig {
    
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));//分页
            return interceptor;
        }
    
    }

        3.2使用batisplus自带的page方法进行分页,或现在自定义的mapper方法中加入Page<?> page参数,batisplus将自动分页

    public interface UserMapper {//可以继承或者不继承BaseMapper
        /**
         * 查询 : 根据state状态查询用户列表,分页显示
         *
         * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(可以继承Page实现自己的分页对象)
         * @param state 状态
         * @return 分页对象
         */
        IPage<User> selectPageVo(Page<?> page, Integer state);
    }
     
  • 相关阅读:
    扁平化职能管理三部曲
    [转载]持续交付和DevOps的前世今生
    敏捷项目管理工具-百度效率云
    敏捷项目管理:基础知识与应用实务
    第8章 “敏捷+”创新创业模式
    第7章 "敏捷+"项目管理
    第6章 迭代循环与项目结束
    第5章 发布循环
    第4章 立项与项目启动
    Windows 2003 + IIS6.0 相关 401.1 或 401.2 等问题解决
  • 原文地址:https://www.cnblogs.com/uip001/p/14713625.html
Copyright © 2011-2022 走看看