前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始做网站3-数据库表创建以及使用mybatis逆向工程

从零开始做网站3-数据库表创建以及使用mybatis逆向工程

作者头像
sunonzj
发布2022-06-21 08:52:53
3590
发布2022-06-21 08:52:53
举报
文章被收录于专栏:zjblogzjblog

数据库表设计遵循三大范式,根据实际的需求来建。。目前建的表足够后台各功能和发文章啥的了,其他的就等后面在慢慢了。

image.png
image.png

数据库搭建完了,就是要写sql和实体映射了,一个一个的写就太麻烦了,用mybatis的逆向工程可以解决这个麻烦~

逆向工程:

MyBatis Generator,简称MBG, 是一个专为MyBatis框架使用者定制的代码生成器,可以提高开发效率快速的根据表生成对应的mapper.xml(配置文件)、mapper.java(接口)、表名.java(pojo类、Javabeen)类。支持基本的增删改查,以及QBC风格的条件查询,但是表连接,存储过程等这些复杂sql的定义需要我们手工编写, 在开发阶段根据表结构创建对应的pojo类。mybatis逆向工程的方向:由数据库表 —>java代码

官方文档地址: http://www.mybatis.org/generator/

官方工程地址: https://github.com/mybatis/generator/releases

然后就是开搞:

1.在pom文件下添加所需的依赖

代码语言:javascript
复制
<!--springboot整合mybatis的依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- MyBatis逆向工程, 逆向工程主要使用这个依赖 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>
        </dependency>

<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!-- mybatis用于生成代码的配置文件 -->
                    <configurationFile>src/main/resources/generator/GeneratorMapper.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

配置文件application.properties参考前面文章无需改动,需要注意的是,src/main/resources/generator/GeneratorMapper.xml中的内容一定要写generatorConfig.xml从src开始的全路径,因为在执行逆向工程的时候会根据这个路径去读取GeneratorMapperxml中的配置。

2.添加逆向工程配置文件GeneratorMapper.xml,以下是文件内容(提示部分按情况修改)和目录结构

代码语言:javascript
复制
<?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>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包,直接idea External Libraries找到右键打开所在位置即可-->
    <classPathEntry location="C:\Users\zj\.m2\repository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar"/>
    <context id="testTables" targetRuntime="MyBatis3">
        <!-- JavaBean 实现 序列化 接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
        <!-- 生成toString -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
            <!-- 是否去除所有自动生成的文件的时间戳,默认为false -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 复制配置文件的即可-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://***/***" userId="***"
                        password="***">
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
            和 NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- targetProject:生成POJO类的位置 -->
        <javaModelGenerator targetPackage="com.zjlovelt.entity" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 默认false 是否对model添加 构造函数 -->
            <property name="constructorBased" value="false"/>
            <!-- 默认false 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
            <!-- 默认false 是否对类CHAR类型的列的数据进行trim操作 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper.xml映射文件生成的位置 需修改-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 需修改-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.zjlovelt.mapper" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!-- 指定数据库表 tableName是数据库中的表名 domainObjectName是实体类名-->
        <!-- 这里多了几个属性,主要是阻止生成example类(用不到)
        enableCountByExample : 是否生成查询总数的 Example
        enableDeleteByExample : 是否生成删除的 Example
        enableSelectByExample : 是否生成查询集合的 Example
        enableUpdateByExample : 是否生成修改的 Example-->
        <!--用户表-->
        <table tableName="sys_user" domainObjectName="SysUser"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
        <!--权限表-->
        <table tableName="sys_group" domainObjectName="SysGroup"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>


    </context>
</generatorConfiguration>

这些配置可以直接拷过去,每一行配置上都有注释,把需要改的改成自己的即可;

配置完了之后,我们就可执行逆向工程了,点击右侧的Maven,左上角先刷新下,就能看到下面的结构,然后找到mybatis-generator,双击运行即可

QQ截图20220415173612.png
QQ截图20220415173612.png

控制台出现以下的样子,就成功了

QQ截图20220415174144.png
QQ截图20220415174144.png

现在可以来看看效果,会发现User.java、UserMapper.java、UserExample.java这三个文件都已经生成好了

QQ截图20220415175306.png
QQ截图20220415175306.png

基本的增删改查都有了后面再根剧需求加一些sql就好了,节省了不少时间啊,要自己一个表一个表的写累死~~

QQ截图20220415181816.png
QQ截图20220415181816.png

最后,开发计划更新~~ 后面会一直更新开发计划,因为文章是在开发时写的,而发布是在后面,所以文章发布时间会比实际开发和写文章的日期要晚点。

Snipaste_2022-04-16_16-47-37.png
Snipaste_2022-04-16_16-47-37.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档