• 如何愉悦使用mybatis


    1. mybatis-generator+plugins

    单独的generator是免不了全部人工的,配上各种插件则不然,感谢项目
    itfsw/mybatis-generator-plugin

    使用如下:

    pom.xml

    	<dependencies>
    		<!-- lombok -->
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    			<version>${lombok.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>${springboot.mybatis.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>com.itfsw</groupId>
    			<artifactId>mybatis-generator-plugin</artifactId>
    			<version>${mybatis.generator.itfsw.version}</version>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<finalName>qna-deploy</finalName>
    		<plugins>
    			<plugin>
    				<groupId>org.mybatis.generator</groupId>
    				<artifactId>mybatis-generator-maven-plugin</artifactId>
    				<version>${mybatis.generator.version}</version>
    				<dependencies>
    					<dependency>
    						<groupId> mysql</groupId>
    						<artifactId> mysql-connector-java</artifactId>
    						<version> 5.1.39</version>
    					</dependency>
    					<dependency>
    						<groupId>org.mybatis.generator</groupId>
    						<artifactId>mybatis-generator-core</artifactId>
    						<version>${mybatis.generator.version}</version>
    					</dependency>
    					<dependency>
    						<groupId>com.itfsw</groupId>
    						<artifactId>mybatis-generator-plugin</artifactId>
    						<version>${mybatis.generator.itfsw.version}</version>
    					</dependency>
    				</dependencies>
    				<executions>
    					<execution>
    						<id>Generate MyBatis Artifacts</id>
    						<phase>deploy</phase>
    						<goals>
    							<goal>generate</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<!--允许移动生成的文件 -->
    					<verbose>true</verbose>
    					<!-- 是否覆盖 -->
    					<overwrite>true</overwrite>
    					<!-- 自动生成的配置 -->
    					<configurationFile>
    						src/main/resources/mybatis-generator.xml</configurationFile>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    

    mybatis-generator.xml 这里我根据我自己项目的情况简况选取了部分插件,更多插件可以见上面给出的github链接。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
        <!--数据库驱动-->
        <!--<classPathEntry    location="mysql-connector-java-5.1.16-bin.jar"/>-->
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!-- 查询单条数据插件(selectOne) -->
            <plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/>
            <!-- Example Criteria 增强插件(可以使用.example()方法) -->
            <plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/>
            <!-- 数据Model属性对应Column获取插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
            <!-- 批量插入插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"/>
            <!-- 存在即更新插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.UpsertPlugin">
                <!--
                支持upsertByExample,upsertByExampleSelective操作
                !需开启allowMultiQueries=true多条sql提交操作,所以不建议使用!插件默认不开启
                -->
                <property name="allowMultiQueries" value="false"/>
                <!--
                开启批量功能,支持batchUpsert,batchUpsertWithBLOBs,batchUpserSelective
                !这几个方法中无法支持IncrementsPlugin的方法!插件默认不开启
                -->
                <property name="allowBatchUpsert" value="true"/>
            </plugin>
            <!-- Lombok插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin">
                <!-- @Data 默认开启,同时插件会对子类自动附加@EqualsAndHashCode(callSuper = true),@ToString(callSuper = true) -->
                <property name="@Data" value="true"/>
                <!-- @Builder 必须在 Lombok 版本 >= 1.18.2 的情况下开启,对存在继承关系的类自动替换成@SuperBuilder -->
                <property name="@Builder" value="false"/>
                <!-- @NoArgsConstructor 和 @AllArgsConstructor 使用规则和Lombok一致 -->
                <property name="@AllArgsConstructor" value="true"/>
                <property name="@NoArgsConstructor" value="true"/>
                <!-- @Getter、@Setter、@Accessors 等使用规则参见官方文档 -->
                <property name="@Accessors(chain = true)" value="false"/>
                <!-- 临时解决IDEA工具对@SuperBuilder的不支持问题,开启后(默认未开启)插件在遇到@SuperBuilder注解时会调用ModelBuilderPlugin来生成相应的builder代码 -->
                <property name="supportSuperBuilderForIdea" value="false"/>
            </plugin>
            <!-- 状态枚举生成插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.EnumTypeStatusPlugin"/>
            <!-- Mapper注解插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.MapperAnnotationPlugin">
                <!-- @Mapper 默认开启 -->
                <property name="@Mapper" value="true"/>
                <!-- @Repository 默认关闭,开启后解决IDEA工具@Autowired报错 -->
                <property name="@Repository" value="true"/>
            </plugin>
            <!-- Example 目标包修改插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin">
                <!-- 修改Example类生成到目标包下 -->
                <property name="targetPackage" value="com.huya.qna.entity.example"/>
            </plugin>
            <!-- 逻辑删除插件 -->
            <plugin type="com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin">
                <!-- 这里配置的是全局逻辑删除列和逻辑删除值,当然在table中配置的值会覆盖该全局配置 -->
                <!-- 逻辑删除列类型只能为数字、字符串或者布尔类型 -->
                <property name="logicalDeleteColumn" value="is_del"/>
                <!-- 逻辑删除-已删除值 -->
                <property name="logicalDeleteValue" value="1"/>
                <!-- 逻辑删除-未删除值 -->
                <property name="logicalUnDeleteValue" value="0"/>
                <!-- 是否生成逻辑删除常量(只有开启时 logicalDeleteConstName、logicalUnDeleteConstName 才生效) -->
                <property name="enableLogicalDeleteConst" value="true"/>
                <!-- 逻辑删除常量名称,不配置默认为 IS_DELETED -->
                <property name="logicalDeleteConstName" value="IS_DELETED"/>
                <!-- 逻辑删除常量(未删除)名称,不配置默认为 NOT_DELETED -->
                <property name="logicalUnDeleteConstName" value="NOT_DELETED"/>
            </plugin>
    
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!--数据库链接地址账号密码-->
            <!--        added by sunboyu@huya.com:在本地generate相关代码-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://00.00.00.00:3306/db_name?useUnicode=true&amp;useSSL=false"
                            userId="balabalabala" password="balabalabala">
            </jdbcConnection>
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
            <!--生成Model类存放位置-->
            <javaModelGenerator targetPackage="com.huya.qna.entity" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!--生成xml文件存放位置-->
            <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!--生成Mapper类存放位置,可选纯注解模式或使用配置文件模式-->
    <!--        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.huya.qna.mapper"-->
    <!--                             targetProject="src/main/java">-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.huya.qna.mapper"
                                 targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
            <!--生成对应表及类名-->
            <table tableName="qna_history" domainObjectName="History"
                   enableInsert="true"
                   enableSelectByPrimaryKey="true"
                   enableSelectByExample="true"
                   enableUpdateByPrimaryKey="true"
                   enableUpdateByExample="true"
                   enableDeleteByPrimaryKey="true"
                   enableDeleteByExample="true"
                   enableCountByExample="true"
                   selectByExampleQueryId="false">
                <!--插入此配置则insert后自动填充主键-->
                <generatedKey column="id" sqlStatement="MySql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>
    

    关于这个配置文件有几点说明:

    1. 如果想要使用github中的插件,必须使用配置文件模式而非注解模式。
    2. table中设定主键自动填充,该填充是直接写入到相应对象的。
    3. table中没有重新设定大类的类型,实际上使用插件后大类不会被分开存放,仅仅生成对应的BLOBS类操作方式,使用时要注意,非BLOBS方法无法取得大类字段。

    之后,在spring的配置文件加入

    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    

    如果是Druid,则要遵循druid中的配置,暂时略,后详述

  • 相关阅读:
    平凡的世界02
    Windows10 下 SoapUI 下载安装详细教程
    免费使用4个小时Play with K8s 来部署你的第一个springBoot宠物医院的应用
    [BAT]批量提交到Git
    python,lua,typescript,go的新手培训服务,程序员面试指导。
    LLVM从小白到放弃(三) LLVM IR概述与常用指令
    LLVM从小白到放弃(二) LLVM Pass
    修车,换前保险杠、换油箱橡胶管
    python连接kafka生产者,消费者脚本
    redis Hyperloglog(基数)
  • 原文地址:https://www.cnblogs.com/cielosun/p/11365252.html
Copyright © 2020-2023  润新知