后端

Spring Boot+Mybatis+通用Mapper

菠萝猫 · 2月23日 · 2020年 397次已读
  • Spring Boot(快速开发)
  • Spring MVC(MVC框架)
  • Mybatis (持久层框架,操作数据库)+通用Mapper

MVC借鉴框架图:

一、创建项目,整合框架

1.若next后失败,试试手机热点。

2.next

3.整合Spring Web+MyBatis Framework+MySQL Driver ->next

4. 生成的项目目录

二、MyBatis添加通用Mapper

单表查询基本上不需要写sql了。原生也可继续使用。

1.加通用Mapper依赖

使用了通用Mapper后,依赖里的Mybatis的Starter依赖就可以删掉了。

添加通用Mapper的依赖就可以。

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

2.加配置 无

3.加通用Mapper注解

在启动类上:

//扫描mybatis那些包里面的接口
@MapperScan("com.itmuch")

启动类所要导的包,可以自己看看对不对,不对运行会有问题:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

至此通用Mapper与SpringBoot整合完成!

三、配置数据源

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/project
    hikari:
      #账号 密码
      username: root
      password: 123456
      # >= 6.x: com.mysql.cj.jdbc.Driver
      # <= 5.x: com.mysql.jdbc.Driver
      driver-class-name: com.mysql.cj.jdbc.Driver

启动项目,运行结果 整合成功:

四、专用代码生成器

1.加专用代码生成器依赖

添加前:

	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

添加后:

	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- start -->
            <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.16</version>
                        <!-- 注意mysql版本与你使用的一致 -->
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.1.5</version>
                    </dependency>
                </dependencies>
            </plugin>
            <!-- end -->
        </plugins>
    </build>

2.加专用代码生成器配置

在新建resources下新建generator,再在其下新建两个文件config.properties和generatorConfig.xml。

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>

        <!--生成实体存放的位置,下同-->
        <javaModelGenerator targetPackage="com.itmuch.project.domain.entity.${moduleName}"
                            targetProject="src/main/java"/>

        <!--生成mapper.xml-->
        <sqlMapGenerator targetPackage="com.itmuch.project.dao.${moduleName}"
                         targetProject="src/main/resources"/>

        <!--生成mapper接口-->
        <javaClientGenerator targetPackage="com.itmuch.project.dao.${moduleName}"
                             targetProject="src/main/java"
                             type="XMLMAPPER"/>

        <!--为哪张表生成代码-->
        <table tableName="${tableName}">
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>
    </context>
</generatorConfiguration>

config.properties:为generatorConfig.xml中的占位符提供数值。

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/project?nullCatalogMeansCurrent=true
jdbc.user=root
jdbc.password=123456

# 模块名称
moduleName= xxx
# 表名
tableName= xxx

专用代码生成器搞定

五、IDEA连接数据库生成代码、测试

1.连接数据库

Database ->DataSource->MySQL

User 数据库用户名 Password 数据库密码 还未建立数据库Database为空 点击Test Connection。若是报错自行百度。

这里提供一个时区错误修改的方法:使用MySQL命令行运行 set global time_zone=’+8:00′;

2.创建数据库project 与 表 project QL->New Console

新建数据库project

右上角三角执行,再打开右侧就有数据库project

create database project

新建表 project

USE `project`;

create table IF NOT EXISTS `project`(
      `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Id',
      `wx_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信id',
      `wx_nickname` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信昵称',
      PRIMARY KEY (`id`)
)

测试

1.修改配置 模块和表名

2.运行方式:右侧Maven边栏->project->mybatis-generator-> mybatis-generator :generate

3.运行结果:

4.编写测试代码

新建TestController编写如下代码

package com.itmuch.project;

import com.itmuch.project.dao.project.ProjectMapper;
import com.itmuch.project.domain.entity.project.Project;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @Autowired //问题标记有下划线 但使用无影响
    private ProjectMapper projectMapper;
    @GetMapping("/test")
    public Project testInsert() {
        Project project = new Project();
        project.setWxId("12312");
        project.setWxNickname("liuzhi");
        this.projectMapper.insert(project);
        return project;
    }
}

5.IDEA启动运行,在浏览器测试成功

数据库添加成功

六、代码生成器整合Lombok

Lombok:简化代码编写,提升开发效率 。 具体知识点用法,用处自行百度。反正用了就是舒服

步骤:

1.为IDEA整合Lombok,下载Lombok插件。File->Settings->Plugins->下载Lombok

2.在Maven中添加Lombok的依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>provided</scope>
        </dependency>

3.整合Lombok

generatorConfig.xml中的以下配置

        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
        </plugin>

将Lombok的配置添加上

        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
            <property name="lombok" value="Getter,Setter,ToString"/>
        </plugin>

完成Lombok的整合

4.测试

再次执行 右侧Maven边栏->project->mybatis-generator-> mybatis-generator :generate

生成的代码如下:

生成的方法是

@Getter
@Setter
@ToString

但是我觉得不行,这样更好,原因等你去了解了Lombok每一个注解就知道用处了。

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor

再次启动IDEA,进行 浏览器测试,成功!

完结!这样写代码就很舒服了

如有疑问欢迎留言,指正不足!


版权声明:本站采用 “知识共享署名 – 非商业性使用 – 相同方式共享 4.0 中国大陆许可协议” 进行许可,您可以转载本站文章,转载时请以超链接形式标明文章原始出处,Thanks.
0 条回应