如何优雅的将数据库表逆向生成代码

本文介绍了三种通过数据库表逆向生成Mybatis和Mybatis-Plus代码的方法,包括使用IntelliJ IDEA插件、mybatis-generator插件以及Mybatis-Plus的AutoGenerator。详细讲解了每种方式的配置和使用步骤,帮助开发者提高开发效率。
摘要由CSDN通过智能技术生成

在这里插入图片描述
作为 Java 开发,数据库操作是不可逃避的问题,最原始的方式可能使用JDBC操作数据库。渐渐的有了对象关系映射的框架。最让人熟知的有 HibernateMybitasHibernate消除了代码的映射规则,开发人员可以将数据库表当对象使用,确实很方便,但是它最大的一个问题是在表关联和复杂的SQL查询支持较差。而Mybitas 是一个款半自动的ORM 框架,开发人员重点关注sql语句即可,框架解除了sql与程序代码的耦合。基于这样的原因我总结了三种方式通过数据库表逆向生成代码,让使用 Mabitas的小伙伴的开发效率提高一个台阶。

三种方式

1.1 Idea 插件生成代码

安装Idea插件 Free Mybatis plugin,如下图:

如何使用呢?需要在Idea 打开数据库视图,连接数据库。

第一次使用Idea连接可能会报下面错误:

Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually. 

解决方法

查询数据库时区,并设置为东八区。sql语句如下:

show variables like '%time_zone%';
set global time_zone='+8:00';

成功连接如下图:

逆向生成代码

在需要生成表右键->EasyCode->Generate Code就可以生成代码。

根据自己的需要选择生成的代码:

我勾选的所有,最终生成的代码结构如下:

└─code
    ├─controller
    │      OptionsController.java
    ├─dao
    │      OptionsDao.java
    ├─entity
    │      Options.java
    └─service
        │  OptionsService.java
        └─impl
                OptionsServiceImpl.java

自定义模板

打开setting搜索easy,就可以找到逆向生成代码的模板,如下图:

1.2 Maven 插件生成代码

Maven项目添加插件(plugin)就可以自动生成代码。

项目引入依赖

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
</plugin>

创建 generatorConfig.xml 文件

在项目资源路径resource 目录创建 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>
    <!-- 选择本地的数据库驱动,这里可以搜索本地maven下载的数据库驱动-->
    <classPathEntry  location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.42\mysql-connector-java-5.1.42.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接,端口,用户名和密码密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3307/mybitas-gen" userId="root" 
public class GeneratorSqlmap { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //指定 逆向工程配置文件 File configFile = new File("generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } public static void main(String[] args) throws Exception { try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } } <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成PO类的位置 --> <javaModelGenerator targetPackage="cn.itcast.ssm.po" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.itcast.ssm.mapper" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库 --> <table schema="" tableName="user"></table> <table schema="" tableName="orders"></table> <table schema="" tableName="items"></table> <table schema="" tableName="orderdetail"></table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不安分的猿人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值