配置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.

posted @ 2020-10-28 20:32  冲冲冲冲冲  阅读(197)  评论(1)    收藏  举报