hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

[springboot 开辟单体web shop] 2. Mybatis Generator 生成common mapper

2019-11-18杂谈搜奇网30°c
A+ A-

Mybatis Generator tool

在我们开启一个新项目的研发后,一般要编写许多的entity/pojo/dto/mapper/dao..., 大多研发兄弟们都邑埋怨,为何我要反复写CRUD? 我们为了防止编写一些不必要的反复代码,这节给人人引见引见运用一个开源东西,来协助我们从这类简朴死板的编码中解救出来。
盛大有请: MyBatis通用Mapper4

通用Mapper都能够极大的轻易开辟人员。能够随意的依据本身的须要挑选通用要领,还能够很轻易的开辟本身的通用要领。
极为轻易的运用MyBatis单表的增编削查。
支撑单表操纵,不支撑通用的多表团结查询。
通用 Mapper 支撑 Mybatis-3.2.4 及以上版本。
Tips:
列位手艺同仁一定要有版本认识哦~
Let's code!

Create mybatis-generator-tool Module

参考上一节中的Module建立mybatis-generator-tool.

  • 增加依靠
<?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">
    <parent>
        <artifactId>expensive-shop</artifactId>
        <groupId>com.life-runner</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mybatis-generator-tool</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <!--springboot 构建可实行fat jars必需的插件,如不增加,在生产环境会有题目-->
            <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>
                    <!-- mysql8 驱动-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.16</version>
                    </dependency>
                    <!--通用 Mapper-->
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.1.5</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>
  • 编写设置文件
    依据我们在pom文件中指定的途径:${basedir}/src/main/resources/generator/generatorConfig.xml, 我们须要在项目src=>main=>resource目次下建立generator文件夹,在文件夹下建立文件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="generator/config.properties"/>

  <context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    <!--设置是不是运用通用 Mapper 自带的诠释扩大,默许 true-->
    <!--<property name="useMapperCommentGenerator" value="false"/>-->

    <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
      <!--设置Mapper生成的basic,可自定义-->
      <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
      <!--大小写转换敏感-->
      <property name="caseSensitive" value="true"/>
      <!--引入lombok注解-->
      <property name="lombok" value="Getter,Setter,ToString"/>
      <!--分隔符定义-->
      <property name="beginningDelimiter" value="`"/>
      <property name="endingDelimiter" value="`"/>
    </plugin>

    <!-- 设置数据库设置 -->
    <jdbcConnection driverClass="${jdbc.driverClass}"
      connectionURL="${jdbc.url}"
      userId="${jdbc.user}"
      password="${jdbc.password}">
    </jdbcConnection>

    <!-- 对应生成的pojo地点包 -->
    <javaModelGenerator targetPackage="com.liferunner.pojo" targetProject="src/main/java"/>

    <!-- 对应生成的mapper地点目次 -->
    <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>

    <!-- 设置mapper对应的java映照 -->
    <javaClientGenerator targetPackage="com.liferunner.mapper" targetProject="src/main/java" type="XMLMAPPER"/>

    <!-- 数据库表 -->
    <table tableName="carousel"></table>
    <table tableName="category"></table>
    <table tableName="items"></table>
    <table tableName="items_comments"></table>
    <table tableName="items_img"></table>
    <table tableName="items_param"></table>
    <table tableName="items_spec"></table>
    <table tableName="order_items"></table>
    <table tableName="order_status"></table>
    <table tableName="orders"></table>
    <table tableName="shop_users"></table>
    <table tableName="user_address"></table>
    <table tableName="users"></table>
  </context>
</generatorConfiguration>

我们能够看到一行设置内容:<properties resource="generator/config.properties"/>,这里是为了将我们的数据库衔接、账号等信息外置,设置内容以下:

jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/expensiveshop?characterEncoding=UTF-8&useSSL\
  =false&useUnicode=true&serverTimezone=UTC
jdbc.user = root
jdbc.password = 12345678

能够看到这里设置的内容就是部属代码中用到的。

...
   <jdbcConnection driverClass="${jdbc.driverClass}"
      connectionURL="${jdbc.url}"
      userId="${jdbc.user}"
      password="${jdbc.password}">
    </jdbcConnection>
...

设置信息人人能够参考:传送门

  • 运用maven测试生成
    实行以下敕令:
mybatis-generator-tool>mvn mybatis-generator:generate
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.life-runner:mybatis-generator-tool >---------------
[INFO] Building mybatis-generator-tool 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- mybatis-generator-maven-plugin:1.3.6:generate (default-cli) @ mybatis-generator-tool ---
[INFO] Connecting to the Database
[INFO] Introspecting table carousel
[INFO] Introspecting table category
...
[INFO] Generating Record class for table carousel
[INFO] Generating Mapper Interface for table carousel
[INFO] Generating SQL Map for table carousel
...
[INFO] Saving file CarouselMapper.xml
...
[INFO] Saving file Carousel.java
[INFO] Saving file Users.java
...
[WARNING] Table configuration with catalog null, schema null, and table shop_users did not resolve to any tables
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.374 s
[INFO] Finished at: 2019-11-05T15:40:07+08:00
[INFO] ------------------------------------------------------------------------

能够看到实行胜利,虽然这里实行胜利,然则当我们翻开文件的时刻会发明:

package com.liferunner.pojo;

import java.util.Date;
import javax.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@Table(name = "Carousel")
public class Carousel {
    /**
     * ����id �û�id
     */
    @Id
    private String id;

    /**
     * �û��� �û���
     */
    private String imageUrl;
    ...
}

这里涌现了乱码题目,这又是怎样回事呢?
没紧要,let's bing... 传送门,能够看到有265000条效果,那就申明我们的题目已经有太多的人碰到了,随意点开一个:

能够看到红框内里的内容我们缺失了,在\expensive-shop\mybatis-generator-tool\src\main\resources\generator\generatorConfig.xml中增加上 <property name="javaFileEncoding" value="UTF-8"/>,从新实行生成敕令,能够看到我们的乱码就没有了。

@Getter
@Setter
@ToString
@Table(name = "`carousel`")
public class Carousel {
    /**
     * 主键
     */
    @Id
    @Column(name = "`id`")
    private String id;

    /**
     * 图片 图片地点
     */
    @Column(name = "`image_url`")
    private String imageUrl;
    ...

Tips:
在这一环节先剧透一个bug,不然我忧郁在后续人人碰到的时刻,由于它确切是和Common Mapper生成相干的。

我们点开生成的Users.java,能够看到以下所示:

@Getter
@Setter
@ToString
@Table(name = "users")
public class Users {
    @Column(name = "USER")
    private String user;

    @Column(name = "CURRENT_CONNECTIONS")
    private Long currentConnections;

    @Column(name = "TOTAL_CONNECTIONS")
    private Long totalConnections;
}

但是我们的Users表不是如许的呀,这是怎样回事???
让我们剖析剖析:
1.既然没有用到我们本身的Users表,然则又确切经由过程生成器生成了,那末很明显一定是Mysql数据库中表,这是一定的。
2.那末题目就来了,它从那里冒出来的?找它,盘它。
3.究竟是哪一个数据库中的呢?sys?information_schema?performance_schema?
4.挨个查询,果真:

能够看到,在performance_schema数据库中有一个users表,那末究竟是不是是我们生成出来的呢?实行SHOW CREATE TABLE users, 效果如上图,字段和生成出来的是一致的!
5.捉住它了,怎样盘它???

很简朴,修正jdbc:mysql://localhost:3306/expensiveshop?nullCatalogMeansCurrent=true&characterEncoding=UTF-8&useSSL =false&useUnicode=true&serverTimezone=UTC,新增上加粗部份就能够了。

nullCatalogMeansCurrent 字面意义很简朴,就是说如果是null catalog,我就挑选current.由于mysql不支撑catalog,我们须要示知mybatis这个特征,设置为true就好了。

依据SQL规范的诠释,在SQL环境下Catalog和Schema都属于抽象观点,主要用来处理定名争执题目。
从观点上说,一个数据库系统包括多个Catalog,每一个Catalog又包括多个Schema,而每一个Schema又包括多个数据库对象(表、视图、序列等),反过来说一个数据库对象必定属于一个Schema,而该Schema又必定属于一个Catalog,如许我们就能够获得该数据库对象的完整限制称号从而处理定名争执的题目了
从完成的角度来看,种种数据库系统对Catalog和Schema的支撑和完成体式格局千差万别,针对详细题目须要参考详细的产物申明书,比较简朴而经常使用的完成体式格局是运用数据库名作为Catalog名,Oracle运用用户名作为Schema名.

可查阅Mysql官网申明:传送门

本节我们解说了怎样生成我们想要的,简朴和主要又反复的事情我们能够经由过程东西完成啦,下一次我们将最先现实营业的编码完成.
gogogo.

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
[springboot 开辟单体web shop] 2. Mybatis Generator 生成common mapper

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282359.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>