配置SpringBoot + Mybatis + Mybatis-generator笔记
SpringBoot + Mybatis + Mybatis-generator
写笔记的时候是用英文写的,直接搬运过来了(虽然大概率也还是只有自己看)
Step 1
Add the Mybatis-Bundle dependencies:
<!-- database-layer -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
and the maven plugin:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
</plugin>
Step 2
Integrate Mybatis with SpringBoot by configuring the application.properties:
# database
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath*:/com/iamwxc/bookstore/data/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.default-statement-timeout=5000
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=false
mybatis.type-aliases-package=com.iamwxc.bookstore.data.domain
# MyBatis Generator (MBG)
mbg.jdbc.url=
mbg.jdbc.username=
mbg.jdbc.password=
mbg.jdbc.driver-location=
mbg.jdbc.driver-class-name=com.mysql.cj.jdbc.Driver
mbg.target-package.mapper=com.iamwxc.bookstore.data.mapper
mbg.target-package.domain=com.iamwxc.bookstore.data.domain
mbg.target-project.java=src/main/java
mbg.target-project.resources=src/main/resources
Step 3
Configure Maybatis-generator in 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>
<properties resource="application.properties"/>
<classPathEntry location="${mbg.jdbc.driver-location}"/>
<context id="mysql" defaultModelType="conditional" targetRuntime="MyBatis3">
<property name="javaFileEncoding" value="UTF-8"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="${mbg.jdbc.driver-class-name}"
connectionURL="${mbg.jdbc.url}"
userId="${mbg.jdbc.username}"
password="${mbg.jdbc.password}">
</jdbcConnection>
<javaModelGenerator targetProject="${mbg.target-project.java}"
targetPackage="${mbg.target-package.domain}">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<javaClientGenerator type="ANNOTATEDMAPPER"
targetProject="${mbg.target-project.java}"
targetPackage="${mbg.target-package.mapper}">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- any table you want to ORM here -->
<table tableName="book">
</table>
</context>
</generatorConfiguration>
Step 4
Run mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate at the root directory of your project(or module), then there will be some generated classes and interfaces at ${mbg.target-package.domain} and ${mbg.target-package.mapper}.
Step 5
Add the annotation @MapperScan above your main class:
@SpringBootApplication
@MapperScan({"com.iamwxc.bookstore.data.mapper"})
public class BookstoreApplication {
public static void main(String[] args) {
SpringApplication.run(BookstoreApplication.class, args);
}
}
the scan target is exactly ${mbg.target-package.mapper}.
Conclusion
Following by the steps above, now the mappers has been injected as beans. But Intellij IDEA cannot detected them when you use annotation such as @Autowired, I recommend you press Ctrl + Alt + S and turn off the Autowired Bean error.

浙公网安备 33010602011771号