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ファイルを作成する.
4.説明
1.generatoConfig.xmlにおいて:contextのtagetRuntime
メモしやすいように、三部作に分けて配置します.スキャンが必要なxmlファイル:appication.xmlに配置します.
3.マッピングを構成するエンティティクラスが必要です.配置しない場合:これらのPOJOの引用を完全限定名来で指定し、例えば
7.最後にmybatisのテストができます.
この章の詳細な紹介は、自動生成の配置と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"}