mybatisplus代码生成器

2022-07-22 15:03:25 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

逆向工程链接: mp03_免费高速下载|百度网盘-分享无限制

目录结构:

生成 :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

代码语言:javascript复制
<?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>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125785.html原文链接:https://javaforall.cn

0 人点赞