数据库表设计遵循三大范式,根据实际的需求来建。。目前建的表足够后台各功能和发文章啥的了,其他的就等后面在慢慢了。
数据库搭建完了,就是要写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文件下添加所需的依赖
<!--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,以下是文件内容(提示部分按情况修改)和目录结构
<?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,双击运行即可
控制台出现以下的样子,就成功了
现在可以来看看效果,会发现User.java、UserMapper.java、UserExample.java这三个文件都已经生成好了
基本的增删改查都有了后面再根剧需求加一些sql就好了,节省了不少时间啊,要自己一个表一个表的写累死~~
最后,开发计划更新~~ 后面会一直更新开发计划,因为文章是在开发时写的,而发布是在后面,所以文章发布时间会比实际开发和写文章的日期要晚点。