Mybatis-plus遇到的坑--版本号不要随便动极容易不兼容

springBoot项目整合mybatis-plus、lombok时遇到了使用代码生成器生成实体类及mapper后,调用方法时报错找不到mapper,后经过一项项调整pom文件内jar包依赖,才知道mybatis-plus版本号存在很多不兼容。

1、导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis的orm插件 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>2.1.9</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatisplus-spring-boot-starter</artifactId><version>1.0.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!--阿里数据库链接依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

因为我用的是阿里云的数据库,所以需要导入阿里云及数据库依赖,lombok为简化实体类生成的插件jar包。
注意:千万注意mybatis-plus版本!!!千万注意mybatis-plus版本!!!千万注意mybatis-plus版本!!!

2、配置分页配置文件和数据源

package com.ds.tech.config;import javax.sql.DataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.alibaba.druid.pool.DruidDataSource;/** * 数据源配置 */@Configurationpublic class DataSourceConfig {     @Bean(name="dataSource")    @ConfigurationProperties(prefix="spring.datasource")    public DataSource dataSource(){        return new DruidDataSource();    }     // 配置事物管理器    @Bean(name="transactionManager")    public DataSourceTransactionManager transactionManager(){        return new DataSourceTransactionManager(dataSource());    }}
package com.ds.tech.config;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.baomidou.mybatisplus.plugins.PaginationInterceptor;@Configuration//扫描dao或者是Mapper接口@MapperScan("com.ds.tech.mapper*")public class MybatisPlusConfig {  /**   * mybatis-plus 分页插件   */  @Bean  public PaginationInterceptor paginationInterceptor(){      PaginationInterceptor page = new PaginationInterceptor();      page.setDialectType("mysql");      return page;  }}

配置代码生成器,然后就可以生成代码使用了

package com.ds.tech;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;import com.baomidou.mybatisplus.generator.config.rules.DbType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;/** * <p> * 代码生成器演示 * </p> */public class MpGenerator {     final static String  dirPath = "D://mybatis";     /**     * <p>     * MySQL 生成演示     * </p>     */    public static void main(String[] args) {        AutoGenerator mpg = new AutoGenerator();        // 选择 freemarker 引擎,默认 Veloctiy        //mpg.setTemplateEngine(new FreemarkerTemplateEngine());         // 全局配置        GlobalConfig gc = new GlobalConfig();        gc.setOutputDir(dirPath);        gc.setAuthor("dashen");        gc.setFileOverride(true); //是否覆盖        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false        gc.setEnableCache(false);// XML 二级缓存        gc.setBaseResultMap(false);// XML ResultMap        gc.setBaseColumnList(false);// XML columList         // 自定义文件命名,注意 %s 会自动填充表实体属性!        // gc.setMapperName("%sDao");        // gc.setXmlName("%sMapper");        // gc.setServiceName("MP%sService");        // gc.setServiceImplName("%sServiceDiy");        // gc.setControllerName("%sAction");        mpg.setGlobalConfig(gc);         // 数据源配置        DataSourceConfig dsc = new DataSourceConfig();        dsc.setDbType(DbType.MYSQL);        dsc.setTypeConvert(new MySqlTypeConvert(){            // 自定义数据库表字段类型转换【可选】//            @Override//            public DbColumnType processTypeConvert(String fieldType) {//                System.out.println("转换类型:" + fieldType);//                // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。//                return super.processTypeConvert(fieldType);//            }        });        dsc.setDriverName("com.mysql.jdbc.Driver");        dsc.setUsername("k");        dsc.setPassword("mj^");        dsc.setUrl("jdbc:mysql://rm-2zql.rds.aliyuncs.06/mjmk_dev?useUnicode=true&characterEncoding=utf-8");        mpg.setDataSource(dsc);         // 策略配置        StrategyConfig strategy = new StrategyConfig();        // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意        strategy.setTablePrefix(new String[] { "tb_", "tsys_" });// 此处可以修改为您的表前缀        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略        strategy.setInclude(new String[] { "store" }); // 需要生成的表        // strategy.setExclude(new String[]{"test"}); // 排除生成的表        // 自定义实体父类        // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");        // strategy.setSuperEntityClass("java.io.Serializable");        // 自定义实体,公共字段        // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });        // 自定义 mapper 父类        // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");        // 自定义 service 父类        // strategy.setSuperServiceClass("com.baomidou.demo.TestService");        // 自定义 service 实现类父类        // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");        // 自定义 controller 父类        // strategy.setSuperControllerClass("com.baomidou.demo.TestController");        // 【实体】是否生成字段常量(默认 false)        // public static final String ID = "test_id";        // strategy.setEntityColumnConstant(true);        // 【实体】是否为构建者模型(默认 false)        // public User setName(String name) {this.name = name; return this;}         strategy.setEntityBuilderModel(true);         strategy.setEntityLombokModel(true);        mpg.setStrategy(strategy);         // 包配置        PackageConfig pc = new PackageConfig();        pc.setParent("com.ds.tech");//        pc.setModuleName("");        pc.setController("controller");        pc.setEntity("entity");        pc.setMapper("mapper");        pc.setService("service");        pc.setServiceImpl("serviceImpl");        pc.setXml("mapperXml");         mpg.setPackageInfo(pc);         // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】        InjectionConfig cfg = new InjectionConfig() {            @Override            public void initMap() {                Map<String, Object> map = new HashMap<String, Object>();                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");                this.setMap(map);            }        };         // 自定义 xxList.jsp 生成        List<FileOutConfig> focList = new ArrayList<FileOutConfig>();/*        focList.add(new FileOutConfig("/template/list.jsp.vm") {            @Override            public String outputFile(TableInfo tableInfo) {                // 自定义输入文件名称                return "D://my_" + tableInfo.getEntityName() + ".jsp";            }        });        cfg.setFileOutConfigList(focList);        mpg.setCfg(cfg);*/         // 调整 xml 生成目录演示/*        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {            @Override            public String outputFile(TableInfo tableInfo) {                return dirPath + tableInfo.getEntityName() + "Mapper.xml";            }        });        cfg.setFileOutConfigList(focList);        */        mpg.setCfg(cfg);         // 关闭默认 xml 生成,调整生成 至 根目录/*        TemplateConfig tc = new TemplateConfig();        tc.setXml(null);        mpg.setTemplate(tc);*/         // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,        // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称        // TemplateConfig tc = new TemplateConfig();        // tc.setController("...");        // tc.setEntity("...");        // tc.setMapper("...");        // tc.setXml("...");        // tc.setService("...");        // tc.setServiceImpl("...");        // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。        // mpg.setTemplate(tc);         // 执行生成        mpg.execute();         // 打印注入设置【可无】        System.err.println(mpg.getCfg().getMap().get("abc"));    }}
(0)

相关推荐