解决了Spring-MybatisPlus的代码生成器整合

解决了三天,难受,废话不多说上图!
第一步,先给pom.xml加依赖jar包!

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

com.youzhong
ssm-phone02
1.0-SNAPSHOT
war

ssm-phone02 Maven Webapp

http://www.example.com

junit junit 4.11 test
<!--模板velocity-engine-core -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.25</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.25</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>${jstl.version}</version>
</dependency>

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus</artifactId>
  <version>2.3</version>
</dependency>

<!-- 日志 -->
<!-- 实现slf4j接口并整合 -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.1.1</version>
</dependency>

<!-- MP  代码生成工具需要的依赖1 velocity-engine-core 2 slf4j-api   3slf4j-log4j12 -->
<!-- Apache velocity -->
<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.0</version>
</dependency>

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

<!--代码生成-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.0.6</version>
  <scope>compile</scope>
</dependency>

<!-- spring-orm -->
<dependency>
  <groupId>springframework</groupId>
  <artifactId>spring-orm</artifactId>
  <version>${spring-orm.version}</version>
</dependency>

<!-- spring-context -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring-context.version}</version>
</dependency>

<!--log4j -->
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>${log4j.version}</version>
</dependency>

<!-- druid -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>${druid.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${spring-webmvc.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>${spring-tx.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${spring-tx.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aspects</artifactId>
  <version>${spring-tx.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <version>${spring-tx.version}</version>
</dependency>


<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>${aspectjweaver.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>


<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j-api.version}</version>
  <scope>test</scope>
</dependency>


<!-- Jackson坐标 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.2.1</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>${jackson-core.version}</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>${jackson-core.version}</version>
</dependency>

<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc7</artifactId>
  <version>12.1.0.1.0</version>
</dependency>
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>RELEASE</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>RELEASE</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-annotation</artifactId>
  <version>3.1.0</version>
  <scope>compile</scope>
</dependency>
ssm-phone02
    <plugin>
      <artifactId>maven-clean-plugin</artifactId>
      <version>3.1.0</version>
    </plugin>
    <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <version>3.0.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.0</version>
    </plugin>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.22.1</version>
    </plugin>
    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.2.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>2.5.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.8.2</version>
    </plugin>

  </plugins>
</pluginManagement>
  <resources>

    <resource>

      <directory>src/main/java</directory>

      <includes>

        <include>**/*.xml</include>

      </includes>

    </resource>

    <!--指定资源的位置-->

    <resource>

      <directory>src/main/resources</directory>

    </resource>

  </resources>

第二步配置你的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>



CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
utf-8


forceEncoding
true

CharacterEncodingFilter /* DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml 1 DispatcherServlet / org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:spring.xml

第三步配置你的spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xmlns:p=“http://www.springframework.org/schema/p
xmlns:context=“http://www.springframework.org/schema/context
xmlns:aop=“http://www.springframework.org/schema/aop
xmlns:tx=“http://www.springframework.org/schema/tx” xmlns:util=“http://www.springframework.org/schema/util

   xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"

 <context:component-scan  base-package="com.youzhong.service,com.youzhong.dao"/>


 <!-- sqlSessionFactory
 <bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean">-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置实体扫描路径,多个package可以用分号; 逗号, 分隔, 支持通配符*-->
    <!-- com.a.b.entity;com.a.c.entity;com.d.*.entity-->
    <property name="typeAliasesPackage" value="com.baomidou.mybatisplus.test.h2.entity"/>
   <!-- <property name="configuration" ref="mybatisConfig"/> -->
    <!-- MP 全局配置注入 -->
    <property name="globalConfig" ref="globalConfig"/>
    <property name="plugins">
        <array>
            <!-- 分页插件配置 -->
            <bean id="paginationInterceptor"
                  class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
            <!-- 乐观锁插件 -->
            <bean id="optimisticLockerInterceptor"
                  class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
            </bean>
            <!-- 性能拦截器,兼打印sql,不建议生产环境配置-->
            <bean id="performanceInterceptor"
                  class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"/>
        </array>
    </property>
</bean>

<bean id="mybatisConfig" class="com.baomidou.mybatisplus.MybatisConfiguration">
    <property name="mapUnderscoreToCamelCase" value="true"/>

    <!-- 部分数据库不识别默认的NULL类型(比如oracle,需要配置该属性 -->
    <property name="jdbcTypeForNull">
        <util:constant static-field="org.apache.ibatis.type.JdbcType.NULL"/>
    </property>
</bean>

<!-- 定义 MP 全局策略 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
    <!-- 逻辑删除 定义下面3个参数-->

    <property name="sqlInjector" ref="logicSqlInjector"/>
    <property name="logicDeleteValue" value="-1"/>
    <property name="logicNotDeleteValue" value="1"/>
    <property name="dbType" value="oracle" />
    <property name="tablePrefix" value="pp_" />
    <!-- 全局ID类型: 0, "数据库ID自增", 1, "用户输入ID", 2, "全局唯一ID", 3, "全局唯一ID"-->
    <property name="idType" value="3"/>
    <!-- 2.1-gamma+ 数据库自动识别,无需配置数据库类型
    <property name="dbType" value="mysql" />
    -->
    <!-- 2.3+ 全局表前缀 mp_
    <property name="tablePrefix" value="mp_" />
    -->
    <!--主键Sequence-->
    <property name="keyGenerator" ref="keyGenerator"/>
    <!-- 公共字段填充处理器 -->
  <!--  <property name="metaObjectHandler" ref="myMetaObjectHandler"/>-->
    <!--数据库关键字转义符,'desc', "desc" 2.1-gamma+不需要制定-->
    <!--<property name="identifierQuote" value="'" />-->
</bean>

<!-- 配置oracle主键Sequence, 其他类型数据库,请配置相应的类型-->
<bean id="keyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"/>

<!-- 自定义处理器 -->
<!-- 逻辑删除Sql注入器-->
<bean id="logicSqlInjector" class="com.baomidou.mybatisplus.mapper.LogicSqlInjector"/>

<!-- 配置mybatis 扫描mapper接口的路径, 相当于注解@MapperScan,@MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">

    <property name="basePackage" value="com.youzhong.dao"/>
</bean>

<!-- druid数据源 -->
 <bean id="dataSource"  class="com.alibaba.druid.pool.DruidDataSource"  init-method="init" destroy-method="close">
  <!-- 数据库驱动 -->
  <property name="driverClassName"  value="${jdbc.driverClassName}" />
  <!-- 基本属性 url、user、password -->
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}"  />
  <property name="password" value="${jdbc.password}"  />
  <!-- 配置初始化大小、最小、最大 -->
  <property name="initialSize" value="1" />
  <property name="minIdle" value="1" />
  <property name="maxActive" value="20" />
  <!-- 配置获取连接等待超时的时间 -->
  <property name="maxWait" value="60000" />
  <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  <property name="timeBetweenEvictionRunsMillis"  value="60000" />
  <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  <property name="minEvictableIdleTimeMillis"  value="300000" />
     <!-- oracle必须这样配置检查,不了会报检查错误 -->
     <property name="validationQuery" value="SELECT 1 FROM DUAL" />

     <property name="testWhileIdle" value="true" />
  <property name="testOnBorrow" value="false" />
  <property name="testOnReturn" value="false" />
  <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
  <property name="poolPreparedStatements"  value="true" />
  <property  name="maxPoolPreparedStatementPerConnectionSize"  value="20" />
  <!-- 配置监控统计拦截的filters -->
  <property name="filters" value="stat" />
 <!-- 解析db.properties -->
 <context:property-placeholder  location="classpath:db.properties"/>
 
 <!-- 创建dao层接口的对象 -->
 <!-- 扫描所有的dao接口,为其创建mapper对象,交给容器管理 -->

 <!-- aop声明式事务 -->
 <aop:config>
      <aop:pointcut expression="execution(*  com.youzhong.service..*.*(..))" id="pointcut"/>
      <aop:advisor advice-ref="advice"  pointcut-ref="pointcut"/>
 </aop:config>
 
 <!-- 通知配置 -->
 <tx:advice id="advice"  transaction-manager="transactionManager">
      <tx:attributes>
          <tx:method name="get*"  propagation="NOT_SUPPORTED" read-only="true"/>
          <tx:method name="find*" propagation="NOT_SUPPORTED" read-only="true"/>
          <tx:method name="select*"  propagation="NOT_SUPPORTED" read-only="true"/>
          <tx:method name="*"/>
      </tx:attributes>
 </tx:advice>
 
 <!-- 事务管理器 -->
 <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource"/>
 </bean>

第三步添加代码生成器的类!!!
package genertor;

import java.sql.SQLException;

import com.baomidou.mybatisplus.enums.IdType;
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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MyBatisPlusGenerator {

public static void main(String[] args) throws SQLException {

    //1. 全局配置
    GlobalConfig config = new GlobalConfig();
    config.setActiveRecord(true) // 是否支持AR模式
            .setAuthor("yy") // 作者
            //.setOutputDir("D:\\workspace_mp\\mp03\\src\\main\\java") // 生成路径
            .setOutputDir("E:/mavenwork/ssm-phone02/src/main/java") // 文件覆盖
            .setFileOverride(true)  // 文件覆盖
            .setIdType(IdType.UUID) // 主键策略
           // .setServiceName("%sService")  // 设置生成的service接口的名字的首字母是否为I
            // IEmployeeService
            .setBaseResultMap(true)//生成基本的resultMap
            .setBaseColumnList(true);//生成基本的SQL片段

    //2. 数据源配置
    DataSourceConfig  dsConfig  = new DataSourceConfig();
    dsConfig.setDbType(DbType.ORACLE)  // 设置数据库类型
            .setDriverName("oracle.jdbc.driver.OracleDriver")
            .setUrl("jdbc:oracle:thin:@localhost:1521:orcl")//我用的Oracle,可以更换数据库
            .setUsername("****")//用户名
            .setPassword("***");//密码

    //3. 策略配置globalConfiguration中
    StrategyConfig stConfig = new StrategyConfig();
    stConfig.setCapitalMode(true) //全局大写命名
            .setDbColumnUnderline(true)  // 指定表名 字段名是否使用下划线
            .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
            .setTablePrefix("pp_")
            .setInclude(new String[] { "pp_phone","pp_phone_color","pp_color","pp_phonedp" }); // 需要生成的表

    //4. 包名策略配置
    PackageConfig pkConfig = new PackageConfig();
    pkConfig.setParent("com.youzhong")
            .setMapper("dao")//dao
            .setService("service")//servcie
            .setController("controller")//controller
            .setEntity("entity")
            .setXml("dao");//mapper.xml

    //5. 整合配置
    AutoGenerator  ag = new AutoGenerator();
    ag.setGlobalConfig(config)
            .setDataSource(dsConfig)
            .setStrategy(stConfig)
            .setPackageInfo(pkConfig);

    //6. 执行
    ag.execute();
}

}

运行类可以得到以下内容,前提是你数据库必须存在这四个表PP_PHONE,PP_PHONEDP,PP_PHONE_COLOR,PP_COLOR,
在这里插入图片描述

在这里可能会遇到一个类似于org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is ‘com/youzhong/dao/ColorMapper.xml’. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ‘org.mybatis.caches.ehcache.LoggingEhcache’. Cause: ja
只需要注释你的每个mapper.xml中的二级缓存就可以正常用运行了,如下图所示!!
在这里插入图片描述
努力奋斗吧,我们还年轻!!!

猜你喜欢

转载自blog.csdn.net/qq_29349143/article/details/89447630