美文网首页SpringBoot
SpringBoot集成通用Mapper

SpringBoot集成通用Mapper

作者: WebGiser | 来源:发表于2021-04-23 17:26 被阅读0次

    参考地址:https://github.com/abel533/Mapper/wiki
    通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。

    项目结构

    image.png

    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.4.4</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.geovis</groupId>
        <artifactId>springboot_study</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot_study</name>
        <description>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-data-jpa</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>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>2.1.5</version>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper</artifactId>
                <version>4.1.5</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
                <scope>provided</scope>
            </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.6</version>
                    <configuration>
                        <configurationFile>
                            ${basedir}/src/main/resources/generator/generatorConfig.xml
                        </configurationFile>
                        <overwrite>true</overwrite>
                        <verbose>true</verbose>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>8.0.23</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>4.1.5</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    application.properties

    
    # 应用程序的一些通用配置
    spring.application.name=SpringBootStudy
    server.port=8080
    # spring日志配置(logging.file.name比logging.file.path的优先级高)
    logging.file.name=E:/temp/${spring.application.name}.log
    # spring日期设置
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    
    
    # mysql数据库连接配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://192.168.41.140:3306/data_resource_manager?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    
    
    # spring文件上传大小设置
    spring.servlet.multipart.max-file-size = -1
    spring.servlet.multipart.max-request-size = -1
    

    主函数 SpringbootStudyApplication.java

    package com.geovis.springboot_study;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import tk.mybatis.spring.annotation.MapperScan;
    
    
    @MapperScan(basePackages = "com.geovis.springboot_study.dao")
    @SpringBootApplication
    public class SpringbootStudyApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringbootStudyApplication.class, args);
        }
    }
    

    resource/generator/generatorConfig.xml

    <!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="generator/config.properties"/>
    
        <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
            <property name="beginningDelimiter" value="`"/>
            <property name="endingDelimiter" value="`"/>
    
            <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
                <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
                <property name="caseSensitive" value="true"/>
            </plugin>
    
            <jdbcConnection driverClass="${jdbc.driverClass}"
                            connectionURL="${jdbc.url}"
                            userId="${jdbc.user}"
                            password="${jdbc.password}">
            </jdbcConnection>
    
            <!-- java实体 -->
            <javaModelGenerator targetPackage="com.geovis.springboot_study.entity"
                                targetProject="src/main/java"/>
    
            <!-- mapper.xml文件 -->
            <sqlMapGenerator targetPackage="mapper"
                             targetProject="src/main/resources"/>
    
            <!-- mapper接口 -->
            <javaClientGenerator targetPackage="com.geovis.springboot_study.dao"
                                 targetProject="src/main/java"
                                 type="XMLMAPPER"/>
    
            <table tableName="{tableName}">
                <generatedKey column="id" sqlStatement="JDBC"/>
            </table>
        </context>
    </generatorConfiguration>
    

    resource/generator/config.properties

    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://192.168.41.140:3306/data_resource_manager?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false
    jdbc.user=root
    jdbc.password=123456
    
    tableName=youju
    

    通用 Mapper 专用代码生成器

    使用该插件可以很方便的生成实体类、Mapper接口以及对应的XML文件
    命令行窗口执行 mvn mybatis-generator:generate即可 或 点击右侧maven插件,即可生成 dao/xxxMapper.java接口、entity/xxxMapper.java实体类、resources/mapper/xxxMapper.xml文件。


    image.png

    TestController.java

    package com.geovis.springboot_study.controller;
    
    
    import com.geovis.springboot_study.dao.YoujuMapper;
    import com.geovis.springboot_study.entity.Youju;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import tk.mybatis.mapper.entity.Example;
    
    import java.util.List;
    
    @RestController
    @RequestMapping(value = "/test")
    public class TestController {
        @Autowired
        private YoujuMapper youjuMapper;
    
    
        @GetMapping(value = "addYouju")
        public void addYouju(){
            Youju youju = new Youju();
            youju.setId("111");
            youju.setDizhi("aaa");
            // 如果使用 inserSelective 就会只给有值的字段赋值(会对传进来的值做非空判断)
            youjuMapper.insertSelective(youju);
        }
    
        @GetMapping(value = "deleteYouju")
        public void deleteYouju(){
            youjuMapper.deleteByPrimaryKey("111");
        }
    
    
        @GetMapping(value = "updateYouju")
        public void updateYouju(){
            Youju youju = new Youju();
            youju.setId("111");
            youju.setDizhi("bbb");
            youjuMapper.updateByPrimaryKeySelective(youju);
        }
    
    
        @GetMapping(value = "/selectYouju")
        public List selectYouju(){
            return youjuMapper.selectAll();
        }
    
    
        @GetMapping(value = "/selectYouju2")
        public List selectYouju2(){
            Example example = new Example(Youju.class);
            example.createCriteria().andLike("dizhi", "%建设大道%");
            example.orderBy("id").desc();
            return youjuMapper.selectByExample(example);
        }
    }
    

    测试

    image.png image.png

    相关文章

      网友评论

        本文标题:SpringBoot集成通用Mapper

        本文链接:https://www.haomeiwen.com/subject/esthrltx.html