mybatisplus代码生成器

 官方文档:https://mp.baomidou.com/guide/

 逆向工程链接:   https://pan.baidu.com/s/1FloqrIhI2d1ns4XgvYPIkA      

目录结构:

生成 :xml映射文件, mapper接口 ,service接口与实现, controller类 ,实体类与AR;

  XML映射文件可以不与mapper放一个包,可以自己移动到resources/mapping下面              

                                                       代码生成器  


1) MP 提供了大量的自定义设置,生成的代码完全能够满足各类型的需求 2) MP 的代码生成器  和 Mybatis MBG 代码生成器: MP 的代码生成器都是基于 java 代码来生成。MBG 基于 xml 文件进行代码生成 MyBatis 的代码生成器可生成: 实体类、Mapper 接口、Mapper 映射文件 MP 的代码生成器可生成: 实体类(可以选择是否支持 AR)、Mapper 接口、Mapper 映射                        文件、 Service 层、Controller 层. 
 
3) 表及字段命名策略选择 在 MP 中,我们建议数据库表名 和 表字段名采用驼峰命名方式, 如果采用下划 线命名方式 请开启全局下划线开关,如果表名字段名命名方式不一致请注解指定,我 们建议最好保持一致。 
 
这么做的原因是为了避免在对应实体类时产生的性能损耗,这样字段不用做映射就能直 接和实体类对应。当然如果项目里不用考虑这点性能损耗,那么你采用下滑线也是没问 题的,只需要在生成代码时配置 dbColumnUnderline 属性就可以 
 
 
6.1 代码生成器依赖  
1) 模板引擎 MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,当然也可以更换为别的模板 技术,例如 freemarker。此处不做过多的介绍。 需要加入 Apache Velocity 的依赖        <dependency>       <groupId>org.apache.velocity</groupId>       <artifactId>velocity-engine-core</artifactId>       <version>2.0</version>   </dependency> 2) 加入 slf4j ,查看日志输出信息         <dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-api</artifactId>    <version>1.7.7</version>   </dependency>   <dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-log4j12</artifactId>    <version>1.7.7</version>   </dependency> 
 
 
6.2 MP 代码生成器示例代码 
 @Test  public void testGenerator() {  

//全局配置

  GlobalConfig config = new GlobalConfig();

  config.setActiveRecord(true)   //是否支持AR模式      

   .setAuthor("weiyunhui") //作者

     .setOutputDir("D:\\workspace_my\\mp03\\src\\main\\java") //生成路径    

      .setFileOverride(true)//文件覆盖    

  .setServiceName("%sService")  //设置生成的service接口名 首字母是否为I    

  .setIdType(IdType.AUTO) //主键策略       ; 

 
  //数据源配置   DataSourceConfig dsConfig = new DataSourceConfig();  

dsConfig.setDbType(DbType.MYSQL)  

  .setUrl("jdbc:mysql://localhost:3306/javaEE_0228")  

 .setDriverName("com.mysql.jdbc.Driver")    

.setUsername("root")  

  .setPassword("1234");  

//策略配置  

StrategyConfig  stConfig = new StrategyConfig();

  stConfig.setCapitalMode(true)  // 全局大写命名  

  .setDbColumnUnderline(true)  //表名 字段名 是否使用下滑 线命名    

.setNaming(NamingStrategy.underline_to_camel) // 数据 库表映射到实体的命名策略

    .setInclude("tbl_employee")  //生成的表

    .setTablePrefix("tbl_"); // 表前缀  

//包名策略  

PackageConfig pkConfig = new PackageConfig();  

pkConfig.setParent("com.atguigu.mp")

    .setController("controller")  

  .setEntity("beans")  

  .setService("service");

  AutoGenerator ag  = new AutoGenerator().setGlobalConfig(config)    

     .setDataSource(dsConfig)        

 .setStrategy(stConfig)    

     .setPackageInfo(pkConfig);  

ag.execute();  }   
6.3 ServiceImpl 说明 
EmployeeServiceImpl 继承了 ServiceImpl 类,mybatis-plus 通过这种方 式为我们注入了 EmployeeMapper,这样可以使用 service 层默认为我们提供的很 多方法,也可以调用我们自己在 dao 层编写的操作数据库的方法. 
6

==============================================================================================

配置文件:

spring/spring-mybatis.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- dataSource -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${db.master.url}" />
        <property name="username" value="${db.master.user}" />
        <property name="password" value="${db.master.password}" />
        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="mergeStat,wall,log4j2" />
        <property name="initialSize" value="5" />
        <property name="maxActive" value="100" />
        <property name="minIdle" value="10" />
        <property name="maxWait" value="60000" />
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testOnBorrow" value="true" />
        <property name="testOnReturn" value="true" />
        <property name="testWhileIdle" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <property name="removeAbandoned" value="true" />
        <property name="removeAbandonedTimeout" value="1800" />
        <property name="logAbandoned" value="true" />
    </bean>

    <!-- Spring整合Mybatis -->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自动扫描Mapping.xml文件 -->
        <property name="mapperLocations" value="classpath*:/sqlMapperXml/*.xml"></property>
        <property name="configLocation" value="classpath:xml/mybatis-config.xml"></property>
        <property name="typeAliasesPackage" value="com.wangzhixuan.model"/>
        <property name="globalConfig" ref="globalConfig"/>
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                    <property name="dialectType" value="mysql"/>
                    <property name="optimizeType" value="aliDruid" />
                </bean>
            </array>
        </property>
    </bean>

    <!-- MP 全局配置 -->
    <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
        <property name="idType" value="0"/>
        <property name="dbColumnUnderline" value="true"/>
    </bean>

    <!-- MyBatis 动态实现  -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 对Dao 接口动态实现,需要知道接口在哪  -->
        <property name="basePackage" value="com.wangzhixuan.mapper"/>
    </bean>

    <!-- 事务管理 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 事务注解 -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    <!-- 事务管理 属性 -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="select*" propagation="REQUIRED" read-only="true" />
            <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>

    <!-- 配置切面 -->
    <aop:config expose-proxy="true" proxy-target-class="true">
        <aop:advisor advice-ref="transactionAdvice" pointcut="execution(* com.wangzhixuan.service..*.*(..))"/>
    </aop:config>
</beans>

猜你喜欢

转载自blog.csdn.net/qq_15204179/article/details/84936163