springboot集積MyBatis(一)--MyBatis Generator自動生成の使用とピット


目次
  • springboot統合MyBatis(一)--MyBatis Generator自動生成の使用とピット
  • 1.プロジェクトのresourceで最初に作成し、generatoConfig.xmlファイル
  • を作成する.
  • .pom.xml
  • を設定する.
  • .プロジェクトのルートディレクトリの下で`mvn mybatis-generator:generate`
  • を実行します.
  • .説明
  • .mybatisを実行する構成
  • を構築する.
  • .mybatisの構成に欠けているいくつかの一般的なエラー情報
  • .最後にmybatisをテストします.
  • springboot統合MyBatis(一)–MyBatis Generator自動生成の使用とピット
    この章の詳細な紹介は、自動生成の配置とmybatisの運行が成功しました.
    1.まずプロジェクトのレスポンスの下で作成し、generatoConfig.xmlファイルを作成する.
    // generatorConfig.xml
    <?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>
    <!--                 :         :driverClass="${jdbc.driverClass}"-->
    <!--    <properties resource="application.properties"></properties>-->
        <!--targetRuntime:
        1,MyBatis3:    ,    MyBatis3.x       ,  XXXBySample;
        2,MyBatis3Simple:  MyBatis3,     XXXBySample;-->
        <context id="mysqlgenerator" targetRuntime="MyBatis3">
            <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
            <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
            <plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/>
            <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
            <plugin type="com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin">
                <property name="targetPackage" value="com.zxd.testforteaching.example"/>
            </plugin>
            <plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/>
            <plugin type="com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin">
                <!--                    ,   table              -->
                <!---->
                <property name="logicalDeleteColumn" value="deleted"/>
                <!--     -     -->
                <property name="logicalDeleteValue" value="1"/>
                <!--     -     -->
                <property name="logicalUnDeleteValue" value="0"/>
            </plugin>
            <plugin type="com.itfsw.mybatis.generator.plugins.OptimisticLockerPlugin"/>
            <!--    XML  -->
            <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
            <commentGenerator>
                <!--                           false:     -->
                <!--       ,           ,               ,       ,     true -->
                <property name="suppressDate" value="true"/>
                <!--             true:  : false:  (         xml merge     ,        ,       UnmergeableXmlMappersPlugin)-->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!--     URL,   、   -->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://127.0.0.1:3306/zxdtestmysql?nullCatalogMeansCurrent=true&serverTimezone=UTC"
                            userId="root"
                            password="root">
                <property name="useInformationSchema" value="true"/>
            </jdbcConnection>
            <!--             -->
            <javaModelGenerator targetPackage="com.zxd.testforteaching.model"
                                targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
                <property name="constructorBased" value="false"/>
            </javaModelGenerator>
            <!--       xml       -->
            <sqlMapGenerator targetPackage="com.zxd.testforteaching.mapper"
                             targetProject="src/main/resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!--   java        -->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.zxd.testforteaching.dao"
                                 targetProject="src/main/java">
            </javaClientGenerator>
            <!--        -->
            <table tableName="course" domainObjectName="Course">
            <!--                  version,    -->
            <!--<property name="versionColumn" value="version"/>-->
            <!--     text      String,    -->
            <!--<columnOverride column="message_content" jdbcType="VARCHAR"></columnOverride>-->
            <!--   insert         id  java   ,        -->
                <generatedKey column="c_id" sqlStatement="MySql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>
    
    
    2.pom.xmlの設定
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zxd</groupId>
        <artifactId>testforteaching</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>testforteaching</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <!--       -->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.7</version>
                    <configuration>
                        <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <!--    xml        -->
                        <overwrite>true</overwrite>
                    </configuration>
                    <dependencies>
                        <!--           jdbc  -->
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>8.0.13</version>
                        </dependency>
                        <!--             。 :selectOneByExample-->
                        <dependency>
                            <groupId>com.itfsw</groupId>
                            <artifactId>mybatis-generator-plugin</artifactId>
                            <version>1.2.10</version>
                        </dependency>
                        <!---->
    <!--                    <dependency>-->
    <!--                        <groupId>org.mybatis.generator</groupId>-->
    <!--                        <artifactId>mybatis-generator-core</artifactId>-->
    <!--                        <version>1.3.7</version>-->
    <!--                    </dependency>-->
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    
    3.プロジェクトルートディレクトリの下で実行するmvn mybatis-generator:generate正しい実行が完了したら、あなたが設定した位置でmybatisの各ファイルを作成します.ps:generateは毎回元のxmlをカバーしますので、自動生成されたxmlの中で自分の語句をDIYしないでください.
    4.説明
    1.generatoConfig.xmlにおいて:contextのtagetRuntime
    	
        1,MyBatis3:    ,    MyBatis3.x       ,  XXXBySample;(  )
        2,MyBatis3Simple:  MyBatis3,     XXXBySample; 
    
    javaCientGeneratorのtype
    	      mybatis  ,   Mapper  ,  ,         ,        Mapper   
            type:      mapper  ( MyBatis3/MyBatis3Simple ):
            1,ANNOTATEDMAPPER:     Mapper  +Annotation     (SQL   annotation ),       XML;
            2,MIXEDMAPPER:      ,   Mapper  ,        Annotation,  XML    XML ;
            3,XMLMAPPER:   Mapper  ,      XML;
          ,  context MyBatis3Simple:   ANNOTATEDMAPPER XMLMAPPER
    
    2.生成したファイルをコメントせずに上書きするには、次のような構成が必要です.
    		1,pom  true,    1.3.7       ;
    		2,         UnmergeableXmlMappersPlugin;
    		           。
    	     :          ,        ,    。                  overwrite  merge 。
    
    5.運行mybatisの配置を構築する
    メモしやすいように、三部作に分けて配置します.スキャンが必要なxmlファイル:appication.xmlに配置します.
    mybatis:
      mapper-locations: classpath:com/zxd/testforteaching/mapper/*.xml
    
    2.スキャンのインターフェースファイルを配置する必要があります.スタートクラスに@MapperScan(「comp.zxd.testforteaching.dao」)を追加して、src.main.javaの後の経路を取ります.または各Mapperインターフェースに@Mapperコメントを付けます.
    3.マッピングを構成するエンティティクラスが必要です.配置しない場合:これらのPOJOの引用を完全限定名来で指定し、例えば
    <resultMap id="BaseResultMap" type="com.zxd.testforteaching.model.Course">
    
    二番目です.Pplication.xmlにpojo参照経路を設定することで、完全に名前を限定する必要はありません.
    mybatis:
      type-aliases-package: com.zxd.testforteaching.model
      -----------------------
      <resultMap id="BaseResultMap" type="Course">
    
    6.mybatisの配置に足りないいくつかのよくあるエラーメッセージorg.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zxd.testforteaching.dao.CourseMapper.selectByPrimaryKey psは、受信されたエンティティ類(pojo)Caused by: java.lang.ClassNotFoundException: Cannot find class: Course psがスキャンされていないため、mapperインターフェースがスキャンされていないため、mapper−locations Field courseMapper in com.zxd.testforteaching.controller.TestController required a bean of type 'com.zxd.testforteaching.dao.CourseMapper' that could not be found. psが設定されていない.
    7.最後にmybatisのテストができます.
    @RestController
    public class TestController {
        @Autowired
        private CourseMapper courseMapper;
        @RequestMapping("/getOne")
        public Course getOne(String a){
            Course course = courseMapper.selectByPrimaryKey("01");
            return course;
        }
    }
    //     {"cId":"01","cName":"  ","tId":"02"}