The use of general mapper combined with mybatis generator in springboot

 

General mapper refers to the package of tk.mybatis. This is a general mapper, which means that the auto generated dao layer needs to inherit the mapper class provided by this framework. And the org.mybatis we used before is common at the beginning.

That is to say, in the beginning, we will use this to generate dao interface (without inheriting other classes), mapper file (with many methods to add, delete, modify and check) and entity class. We feel very troublesome, so we come out with a general mapper. We just need to inherit the mapper class. There is an automatic way to add, delete, modify and query, similar to jpa. The code is simple. Let's just talk about how to generate automatically.

There are many pitfalls, for example, spring boot 2.0 or above will cause problems, and 1.5 will do. Follow the tutorial. It's bound to succeed.

pom file

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
&lt;groupId&gt;com.example&lt;/groupId&gt;
&lt;artifactId&gt;tk-mybatis&lt;/artifactId&gt;
&lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
&lt;packaging&gt;jar&lt;/packaging&gt;

&lt;name&gt;tk-mybatis&lt;/name&gt;
&lt;description&gt;Demo project <span style="color: #0000ff;">for</span> Spring Boot&lt;/description&gt;

&lt;parent&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
    &lt;version&gt;1.5.10.RELEASE&lt;/version&gt;
    &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
&lt;/parent&gt;

&lt;properties&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
    &lt;project.reporting.outputEncoding&gt;UTF-8&lt;/project.reporting.outputEncoding&gt;
    &lt;java.version&gt;1.8&lt;/java.version&gt;
&lt;/properties&gt;

&lt;dependencies&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
    &lt;/dependency&gt;
    &lt;!--mybatis--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt;
        &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt;
        &lt;version&gt;1.3.2&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;!--mysql drive--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;mysql&lt;/groupId&gt;
        &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
        &lt;scope&gt;runtime&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;!-- mybatis Reverse generation tool  --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt;
        &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt;
        &lt;version&gt;1.3.2&lt;/version&gt;
        &lt;scope&gt;compile&lt;/scope&gt;
        &lt;optional&gt;<span style="color: #0000ff;">true</span>&lt;/optional&gt;
    &lt;/dependency&gt;
    &lt;!--mapper --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;tk.mybatis&lt;/groupId&gt;
        &lt;artifactId&gt;mapper-spring-boot-starter&lt;/artifactId&gt;
        &lt;version&gt;1.2.4&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;!--Database connection pool--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
        &lt;artifactId&gt;druid-spring-boot-starter&lt;/artifactId&gt;
        &lt;version&gt;1.1.0&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
        &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
&lt;/dependencies&gt;

&lt;build&gt;
    &lt;plugins&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
        &lt;/plugin&gt;

        &lt;plugin&gt;
            &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt;
            &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;1.3.2&lt;/version&gt;
            &lt;configuration&gt;
                &lt;!--generator Location of profile--&gt;
                &lt;configurationFile&gt;${basedir}/src/main/resources/generatorConfig.xml&lt;/configurationFile&gt;
                &lt;verbose&gt;<span style="color: #0000ff;">true</span>&lt;/verbose&gt;
                &lt;overwrite&gt;<span style="color: #0000ff;">true</span>&lt;/overwrite&gt;
            &lt;/configuration&gt;
            &lt;dependencies&gt;
                &lt;dependency&gt;
                    &lt;groupId&gt;mysql&lt;/groupId&gt;
                    &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
                    &lt;version&gt;5.1.36&lt;/version&gt;
                &lt;/dependency&gt;
                &lt;dependency&gt;
                    &lt;groupId&gt;tk.mybatis&lt;/groupId&gt;
                    &lt;artifactId&gt;mapper&lt;/artifactId&gt;
                    &lt;version&gt;3.4.0&lt;/version&gt;
                &lt;/dependency&gt;
            &lt;/dependencies&gt;
        &lt;/plugin&gt;
    &lt;/plugins&gt;
&lt;/build&gt;

</project>

Back to the top

generatorConfig.properties

# Generator
generator.targetProject=src/main/java
generator.mappers=com.example.demo.baseMapper.IBaseMapper
generator.javaModel-targetPackage=com.example.demo.domain
generator.sqlMap-targetPackage=com.example.demo.dao
generator.javaClient-targetPackage=com.example.demo.dao

#mysql
driverClass=com.mysql.jdbc.Driver
connectionURL=jdbc:mysql://localhost:3306/video?serverTimezone=UTC
userId=root
password=root

Back to the top

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">
<! -- root node -- >
<generatorConfiguration>
    <! -- specify external attribute element -- >
    <properties resource="generatorConfig.properties"/>
    <! -- you must specify the environment in which to generate a set of objects -- >
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <! -- separator -- >
        <property name="autoDelimitKeywords" value="true"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
    &lt;!-- currency mapper Plug-in unit --&gt;
    &lt;plugin type="tk.mybatis.mapper.generator.MapperPlugin"&gt;
        &lt;!-- Here MyMapper Note that it must not be scanned--&gt;
        &lt;property name="mappers" value="${generator.mappers}"/&gt;
    &lt;/plugin&gt;
    &lt;!-- Comment rule--&gt;
    &lt;commentGenerator&gt;
        &lt;property name="suppressAllComments" value="false"/&gt;
        &lt;property name="suppressDate" value="true"/&gt;
    &lt;/commentGenerator&gt;


    &lt;jdbcConnection driverClass="${driverClass}"<span style="color: #000000;">
                    connectionURL</span>="${connectionURL}"<span style="color: #000000;">
                    userId</span>="${userId}"<span style="color: #000000;">
                    password</span>="${password}"&gt;
    &lt;/jdbcConnection&gt;

    &lt;javaModelGenerator targetPackage="${generator.javaModel-targetPackage}" targetProject="${generator.targetProject}"/&gt;
    &lt;sqlMapGenerator targetPackage="${generator.sqlMap-targetPackage}" targetProject="${generator.targetProject}"/&gt;
    &lt;javaClientGenerator targetPackage="${generator.javaClient-targetPackage}" targetProject="${generator.targetProject}"<span style="color: #000000;">
                         type</span>="XMLMAPPER"/&gt;
    &lt;table tableName="bgm"&gt;
        &lt;!--mysql To configure--&gt;
        &lt;generatedKey column="id" sqlStatement="Mysql" /&gt;
        &lt;!--oracle To configure--&gt;
        &lt;!--&lt;generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/&gt;--&gt;
    &lt;/table&gt;
&lt;/context&gt;

</generatorConfiguration>

Back to the top

IBaseMapper (let the generated mapper interface inherit this class)

package com.example.demo.baseMapper;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**

  • Created by
  • on 2018/11/1 22:04.
    */
    public interface IBaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
    }

 

It's ok.

Keywords: Mybatis MySQL Spring Maven

Added by Javizy on Wed, 13 Nov 2019 20:12:29 +0200